Я вижу очень странное поведение на NAS, основанном на Linux (DNS-323). Я использую простой сценарий оболочки для резервного копирования файлов на NAS в другую коробку. После внесения некоторых недавних дополнений скрипт начал давать сбой, когда он запускался из cron или at . У меня не было проблем, когда я запускал скрипт напрямую.

После долгих отладок я наконец понял, что что-то после определенного момента просто не было выполнено. Это как сценарий обрезан. Я смог обойти проблему, укоротив сценарий (в основном, удалив комментарии), и теперь, похоже, он работает. Хотя мне все еще интересно, почему это происходит.

Кто-нибудь еще видел что-то подобное? Что может быть причиной этого?

1 ответ1

1

Самая большая разница здесь заключается в том, что мы работаем над своего рода встроенной системой.

Если я правильно читаю, это будет сценарий, который будет казаться усеченным, а не вывод (который затем может быть отправлен по почте). Я буду угождать каждому.

Если это на самом деле скрипт, но он работает при непосредственном запуске, то я бы предложил следующее:

  1. Сценарий особенно большой?
  2. Есть ли в скрипте какие-либо специфичные для Bash функции ("bashisms")... обратите внимание, что /bin /sh может - и часто отличается - другим. Вы можете установить SHELL = /bin /bash в вашем crontab (если это доступно)
  3. Вы пытаетесь написать свой скрипт в вашем crontab или вы вызываете файл скрипта.
  4. Изменится ли поведение, если вы перенаправите как stdout, так и stderr в файл в файловой системе с достаточным свободным пространством?
  5. В подобных случаях я считаю полезным создать временную запись в crontab, которая вызывает команду 'env' и перенаправляет вывод в файл или электронную почту. Иногда это может показать неожиданные различия в среде (например, настройки локали, которые часто различаются).
  6. Вы можете поместить 'set -x' в ваш файл скрипта. Это приведет к выводу отладочной информации по мере выполнения скрипта. Вы можете использовать 'set +x', чтобы отключить его. Это полезно при определении того, где завершится выполнение скрипта.
  7. Какое программное обеспечение используется здесь:
    • SMTP: что выдает «sendmail --version» или «sendmail -v»

Если на самом деле это был вывод, то я должен сказать, что поведение будет очень сильно зависеть от используемого MTA. Во встроенной среде он может превышать определенный размер буфера (возможно, это будет зависеть от доступного пространства в файловой системе).

Кроме того, вы проверили наличие обновленной прошивки: http://support.dlink.com/ProductInfo.aspx?m=DNS-323 Последняя версия - версия 1.10 от мая 2012 г.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .