Как я узнаю, почему cron не выполняет мою работу?

15

Я использую Ubuntu 14.04, и демон cron работает:

# ps ax | grep cron
822 ?        Ss     0:00 cron

но это не выполнение каких-либо заданий. Я ранее получал записи в /var/log/syslogтаких как это:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

но сейчас нет записей, связанных с cron. Я также получал такие записи в /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

но опять же, теперь нет записей, связанных с cron.

Я не знаю, что что-то изменилось. Я попытался перезапустить Cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Я попытался использовать, crontab -eчтобы добавить работу cron, * * * * * date >> /tmp/somefileкоторая работала, но она установила новый crontab /var/spool/cron/crontabs/root, тогда как я хочу, чтобы cron использовал файл в /etc/crontab.

Есть ли какая-либо опция отладки, которую я могу использовать, или журнал где-нибудь, который может выдать сообщение об ошибке, которое я могу исследовать?

jl6
источник
1
Что отображается в crontab -l?
user345352353
no crontab for root,
JL6
Я верю, что если вы немного поищете на этом сайте SE, у вас будет ответ. Это довольно распространенная проблема.
MDPC
Кроны, полученные с помощью crontabкоманды ( -lswitch), зависят от пользователя, а /etc/crontabиспользуются для хранения общесистемных крон. По этой причине сохраненные задачи /etc/crontabне будут отображаться ни у кого crontab -l.
Джон У. С. Смит,
Обратите внимание, что Server Fault имеет канонический вопрос об отладке cronjob, который может помочь.
Wildcard

Ответы:

4

Чтобы в дальнейшем помочь вам отладить, что не так с вашей cronработой, вы должны проверить свою почту. Обычно это хранится в файле типа /var/mail/<user_name>или /var/spool/mail/<user_name>.

Эти два файла на самом деле являются жесткими ссылками на мою коробку Debian, но я не знаю, является ли это стандартным.

объяснение

Со cron(8)страницы:

При выполнении команд любой вывод отправляется по почте владельцу crontab (или пользователю, указанному в переменной окружения MAILTO в crontab, если таковой существует).

Джозеф Р.
источник
Я проверил почту; ничего не генерируется, и нет файла dead.letter.
16
0

Вы показали, что crontab для root отсутствует, есть ли у пользователей запись в crontab? Если вы используете только root, вы также можете проверить следующие каталоги: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

на моей машине (centos 6.4) у меня есть mlocate.cron внутри каталога /etc/cron.daily/, и cron запускает этот скрипт ежедневно.

так что я думаю, что вам просто нужно добавить работу cron.

Hudspeth
источник
Но есть файл crontab в /etc/crontab. Может быть, вопрос, почему crontab -lне признает это?
16
0

Я решил это, изменив разрешения на /etc/crontabследующее:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Ранее это было -rw-rw-r--. Это было единственное изменение. Это не сработало, теперь это так. Все еще не уверен почему.

jl6
источник
1
Корневой crontab будет выполнять любые команды как root. Разрешения, разрешающие доступ для записи без полномочий root, будут считаться брешей в безопасности.
ChuckCottrill
@ChuckCottrill: Но бит записи группы дал бы доступ на запись только тем, кто находится в корневой группе, - который предположительно является просто пользователем (-ами) root?
16
0

У меня также был похожий тип проблемы, но после указания пользователя root на /etc/crontab , cron начал запускаться.

Это может быть связано с синтаксисом, который следует за, crontab -eкоторый отличается от /etc/crontab.

MohanBabu
источник