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