Это может быть немного запутанной темой, потому что существуют разные реализации cron. Также было несколько ошибок, которые нарушали эту функцию, и есть также некоторые случаи использования, когда она просто не будет работать, особенно если вы выполняете выключение / загрузку вместо перезагрузки.
ошибки
дата № 1
Здесь описана одна такая ошибка в Debian под названием: cron: @reboot задания не выполняются . Похоже, это пробило себя и в Ubuntu, что я не могу подтвердить напрямую
дата № 2
Доказательство ошибки в Ubuntu, похоже, подтверждается здесь в этом SO Q & A под названием: @reboot cronjob не выполняется .
выдержка
комментарий №1: .... 3) ваша версия crond может не поддерживать @reboot вы используете vron's crond? ... показать результаты пользователя crontab -l -u
комментарий № 2: ... Возможно, было бы неплохо установить его в качестве сценария инициализации, а не полагаться на конкретную версию @reboot cron.
комментарий № 3: ... @MarkRoberts удалил перезагрузку и изменил 1 * * * *, чтобы * / 1 * * * *, проблема решена! Куда мне отправлять респ птс марки? Спасибо!
Принятый ответ в этом Q & A также имел этот комментарий:
Мне кажется, Lubuntu не поддерживает синтаксис @Reboot Cron.
Дополнительные доказательства
дата № 3
В качестве дополнительного доказательства была эта тема, что кто-то пытался сделать то же самое и разочаровывался, что это не сработало Это называется: Тема: Cron - задания @reboot не работают .
выдержка
Re: Cron - задания @reboot не работают
Цитата Сообщение от ceallred Посмотреть сообщение Это убивает меня ... Попробовал скрипт оболочки. При запуске вручную создается файл журнала ... перезагрузка, и задание не запускается или не создает файл журнала.
Системный журнал показывает, что CRON выполнил задание ... но, опять же, нет вывода, и процесс не запущен. 15 июля, 20:07:45 RavenWing cron [1026]: (CRON) INFO (Запуск заданий @reboot) 15 июля, 20:07:45 RavenWing CRON [1053]: (ceallred) CMD (/ home / ceallred / Scripts / run_spideroak. sh> /home/ceallred/Scripts/SpiderOak.log 2> & 1 &)
Кажется, что cron не нравится команда @reboot .... Есть еще идеи?
Хорошо ... Частично решено. Я отмечу это как решенное и начну новую тему с новой проблемой .....
Я думаю, что ответом было то, что мой зашифрованный домашний каталог не был смонтирован, когда CRON пытался запустить скрипт (хранится в / home / username / scripts). Перемещено в / usr / scripts, и задание выполняется должным образом.
Так что теперь это, кажется, проблема spideroak. Процесс запускается, но к тому моменту, когда процесс загрузки завершается, его уже нет. Я предполагаю сбой по какой-то причине .... Новая тема, чтобы спросить об этом.
Спасибо за помощь!
Как только этот пользователь выяснил свою проблему, он смог @reboot
работать с записью crontab пользователя.
Я не совсем уверен, какая версия cron используется в Ubuntu, но, похоже, это указывает на то, что пользователь тоже может использовать эту версию @reboot
или что ошибка была исправлена в какой-то момент в последующих версиях cron.
дата № 4
Я протестировал на CentOS 6 следующее, и это сработало.
пример
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
Затем я перезагрузил систему.
$ sudo reboot
После перезагрузки.
$ cat reboot.txt
hi
Убирайся
- Эта функция поддерживается как для системных, так и для пользовательских записей crontab.
- Вы должны убедиться, что он поддерживается / работает в вашем конкретном дистрибутиве и / или версии пакета cron.
Чтобы узнать больше о том, как работает настоящий механизм, @reboot
я наткнулся на этот пост в блоге, в котором обсуждаются внутренности. Он называется: @reboot - объясняет простую магию крона .
Отладка crond
Вы можете увеличить детализацию crond
, добавив следующее в этот файл конфигурации на дистрибутивах на основе RHEL / CentOS / Fedora.
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
Допустимые уровни: 0, 1 или 2. Чтобы вернуть этот файл к уровню ведения журнала по умолчанию, просто удалите его, "-L 2"
когда закончите отладку ситуации.