Журнал cron по адресу /var/log/cron
дает мне следующее, когда я перезагружаю систему или запускаю cron вручную (с /etc/init.d/cron start
команда):
Jul 2 10:17:31 monserver /usr/sbin/cron[17386]: (CRON) INFO (pidfile fd = 3)
Jul 2 10:17:31 monserver /usr/sbin/cron[17387]: (CRON) STARTUP (fork ok)
Jul 2 10:17:31 monserver /usr/sbin/cron[17387]: (CRON) DEATH (Can't create reboot check file)
Проверено, что cron действительно не работает с ps aux | grep cron
У этого сервера недавно были проблемы с разрешениями для других приложений (например, nagios). Я не удивлюсь, если это так, но я не смог отследить расположение этого «файла проверки перезагрузки». Это более старая система Debian (версия 5.0.2).
Пожалуйста, дайте мне знать, если потребуется дополнительная информация
Это, кстати, запускается специфический код Debian. Как уже сказал karmawhore, похоже, что у вас проблемы с разрешением / var / run, предотвращая /var/run/crond.reboot от создания.
#ifdef DEBIAN
#define REBOOT_FILE "/var/run/crond.reboot"
/* Run on actual reboot, rather than cron restart */
if (access(REBOOT_FILE, F_OK) == 0) {
/* File exists, return */
log_it("CRON", getpid(),"INFO",
"Skipping @reboot jobs -- not system startup");
return;
}
/* Create the file */
if ((rbfd = creat(REBOOT_FILE, S_IRUSR&S_IWUSR)) < 0) {
/* Bad news, bail out */
log_it("CRON",getpid(),"DEATH","Can't create reboot check file");
exit(0);
} else {
close(rbfd);
log_it("CRON", getpid(),"INFO", "Running @reboot jobs");
}
Debug(DMISC, ("[%d], Debian running reboot jobs\n",getpid()));
#endif
Кажется, что Cron запущен после ручного создания пустого файла /var/run/crond.reboot и перезапуска cron (с /etc/init.d/cron start). Странно. Наверное, временное исправление. Он выживает после перезапуска, но еще неизвестно, переживет ли он перезагрузку системы (развлечение на другой день). Спасибо karmawhore и andol за столь необходимый совет.
Это звучит как /var/run
имеет неверные разрешения, 755
это то, что устанавливает базовая программа установки Debian /var/run
В качестве альтернативы, возможно /var/run/crond.reboot
стал неизменным.
Бегать
lsattr /var/run/crond.reboot
чтобы увидеть, если i
или a
биты установлены.
Бегать
chattr -ia /var/run/crond.reboot
если установлено одно или оба.