задание Linux Debian crontab не выполнено - PullRequest
7 голосов
/ 30 марта 2011

У меня есть скрипт bash foo.sh , расположенный в каталоге / etc / cron.daily , chmoded 700, принадлежит пользователю root, список crontab для пользователя root не изменяется ( crontab -l) из основной установки Debian. Я запустил cronjob иначе, чем crontab -l и / или crontab -e (например, я не перезапускал демон cron с /etc/init.d/cron, как рекомендовано в случае конкретного Debian). Несмотря на тестовое задание файл работает в аналогичных условиях. Сценарий отлажен и может быть запущен как отдельная задача без возврата ошибок. Я также проверил логи (/ var / log / syslog) и ничего плохого там нет.

Но : это конкретное задание вообще не выполняется.

Ответы [ 3 ]

13 голосов
/ 30 марта 2011

К сожалению. Думаю, я нашел «почему» или, по крайней мере, «как»:

Только переименование файла задания без расширения ".sh" решило эту проблему.

Я думал, что это ошибка Debian, но это не так, как описано в других ответах ниже.

РЕШЕНИЕ: переименуйте ваш скрипт, удалив все . или + символов из его имени

8 голосов
/ 30 марта 2011

Сценарии /etc/cron.daily выполняются частями выполнения (см. Man 8 run-parts).

Вы идете с фрагментом из справочной страницы:

Если не указана ни опция --lsbsysinit, ни опция --regex, тогда имена должны состоять исключительно из прописных и строчных букв, цифр, подчеркиваний и дефисов.

из / etc / crontabвы можете видеть, что ежедневные задания cron выполняются с:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

debian не использует anacron, и для run-parts не указана опция --lsbsysinit (в этом случае '.' будет принятов имени файла сценария cron в соответствии с иерархическими и зарезервированными пространствами имен LSB)

в любом случае, чтобы убедиться, что cron запустит ваш сценарий, вы всегда можете запустить run-parts и проверить, что ваш сценарий указан в выводе run-parts:

run-parts --test /etc/cron.daily

или

run-parts --list /etc/cron.daily

Надеюсь, мой комментарий поможет вам понять, в чем была настоящая проблема.

0 голосов
/ 25 февраля 2014

Все ответы, приведенные ранее, хороши и приемлемы для вопроса.Тем не менее, я считаю, что я должен добавить свою точку зрения, чтобы прояснить, что ОС Debian Linux не поддерживает имена файлов заданий cron, которые включают символ . или +.См. соответствующий раздел в Руководстве по политике Debian .

Так что это просто, чтобы избежать путаницы, это не ошибка.Вот как работает Debian.

...