Как узнать, почему cron не выполняет мои задания?

Как узнать, почему cron не выполняет мои задания?

Я использую 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.

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

решение1

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

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

Объяснение

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

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

решение2

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

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

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

решение3

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

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

Раньше было -rw-rw-r--. Это было единственное изменение. Это не работало, теперь работает. До сих пор не знаю, почему.

решение4

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

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

Связанный контент