Назад | Перейти на главную страницу

Служба Cron не запускается - не удается создать файл проверки перезагрузки

Журнал 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 

если установлено одно или оба.