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

cron игнорирует изменения в / etc / crontab

Я наблюдаю странное поведение cron, которое я не знаю, как отлаживать и исправлять.

Он игнорирует изменения в /etc/crontab до перезапуска, например Я редактирую /etc/crontab добавление

* * * * * root echo 'weee' > /tmp/stupidcron

к нему. Затем:

root@linux-plba:~# sleep 270 && ls /tmp/stupidcron ls: cannot access /tmp/stupidcron: No such file or directory

Все, что добавлено с crontab утилита работает.

Если я перезапущу cron, изменение будет сохранено, но любые последние изменения не будут до следующего перезапуска.

У меня root-почта перенаправлена ​​на мой почтовый ящик, и там нет ничего интересного. Я тоже ничего не вижу в системном журнале.

Ближе всего к этому я нашел эту старую ветку в списке рассылки FreeBSD:

http://lists.freebsd.org/pipermail/freebsd-questions/2010-September/221179.html

Cron - это Vixie cron 4.1-194.209.1 x86-64

Наверное, кто-то видел такое поведение или знает, как его дальше отладить / исправить?

P.S. Я прочитал об этом вики сообщества: Почему мой crontab не работает и как я могу устранить его? и я считаю, что это дело там не рассматривается.

Хорошо, похоже, что на этот вопрос нет ответа.

Мой коллега решил понизить версию cron и посмотреть, что произойдет, и все сработало нормально.

Поэтому он просмотрел файлы спецификаций в SRPM для старых и новых версий, и, похоже, это один из патчей, нарушающих cron:

* Wed Aug 6 2014 tchvatal@suse.com - Fix cron man page being ambiguous bnc#853010: * bnc#853010-manpage-ambiguous.patch - Fix wrong mtime when reruning cron scripts bnc#879734: * bnc#879734-directory-mtime.patch

Поскольку трассировка показывает cron делает stat файл и структура, которую он получает является правильно, это проблема cron, а не проблема с неправильной настройкой / разрешениями и т. д.

Когда вы используете crontab -e (стандартный способ добавления заданий cron), вы могли заметить, что редактируете временный текстовый файл. После выхода из crontab установлены автоматически. Crontab создаст по одному файлу для каждого пользователя в /var/spool/cron/crontabs. И демон cron, конечно, ищет /etc/crontab слишком.

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.ZRmGzQ/crontab installed on Mon May 12 07:50:40 2014)

Это заголовок одного пользовательского файла в /var/spool/cron/crontabs. Это означает, что редактирование файла не поможет. Также /tmp/crontab.ZRmGzQ/crontab обозначает временный файл, используемый crontab -e при последнем обновлении.

sysadmin@omg:~$ crontab -l > tmp-cron.txt
sysadmin@omg:~$ echo '*/1 * * * * echo "APOEL ULTRAS" >> /tmp/stupidcron' >> tmp-cron.txt
sysadmin@omg:~$ crontab tmp-cron.txt
sysadmin@omg:~$ sleep 150 && cat /tmp/stupidcron
APOEL ULTRAS
APOEL ULTRAS

Здесь я экспортирую свои текущие crontab во временный файл tmp-cron.txt, добавляю crontab и снова устанавливаю файл. Работает отлично.

Итак, в основном crontab в вашем случае не работает, потому что он не был установлены.

Просто быть осторожен когда вы устанавливаете новый текстовый файл, вы перезаписываете старый. Сделайте резервную копию ваших файлов перед игрой.