Вопрос: Расписание работы с использованием crontab, что произойдет, когда компьютер отключится за это время?


Я планирую некоторые задачи с помощью crontab.

Что произойдет, если мой компьютер выключится или выключится в то время, когда cron планировал что-то сделать?

Выполняется ли каждое пропущенное задание cron после включения компьютера или пропущенные задания за этот день игнорируются? Если пропущенные задания не возобновляются, есть ли способ настроить cron таким образом, чтобы он запускал пропущенные задачи после того, как компьютер снова включен?


72
2017-08-10 16:22


Источник


Я пробовал искать анакрон-учебник в Интернете, но не мог найти никаких хороших. Заглядывать в страницы с людьми тоже не очень помогло мне. Как я могу изменить уже существующий crontab так, чтобы он был изменен на anacron ?? Или любой учебник в этом будет очень полезен - seg.server.fault
Я отредактировал свой ответ, чтобы включить некоторые примеры. Надеюсь, это поможет! - jeff


Ответы:


Когда ваш компьютер выключен (или демона cron в противном случае не работает), задания cron не будут запущены.

Если у вас есть задания, которые вы хотите запустить после того, как в то время, когда компьютер выключен, используйте anacron. Установленный по умолчанию, см. «Man anacron», «man anacrontab» или файл / etc / anacrontab для получения дополнительной информации.

Ubuntu по умолчанию использует anacron для записей crontab в:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

оставляя оставшиеся crontabs обработанные основным демоном cron, а именно:

/etc/crontab
/etc/cron.d
/var/spool/cron

ЗАМЕТКИ

Anacron сам по себе не работает как демон, а полагается на сценарии запуска системы и сам cron для запуска.

В ящике Ubuntu 8.04, на который я смотрю, /etc/init.d/anacron запускается при загрузке, и снова в понедельник утром в 07:30.

README в /usr/share/doc/anacron/README.gz имеет немного больше информации, чем содержится в man-страницах.

ПРИМЕРЫ

Для простых «ежедневных», «еженедельных», «месячных» заданий поместите копию или символическую ссылку на скрипт в одну из директорий /etc/cron.{daily|weekly|monthly} выше. Anacron позаботится о том, чтобы запускать его ежедневно / еженедельно / ежемесячно, и если ваш компьютер выключен в тот день, когда обычно запускаются «еженедельные» сценарии, он запускает их при следующем включении компьютера.

В качестве другого примера, предположим, что у вас есть сценарий здесь: /usr/local/sbin/maint.sh

И вы хотите запускать его каждые три дня, стандартная запись в / etc / crontab будет выглядеть так:

# m h dom mon dow user  command
0 0 */3 * * root /usr/local/sbin/maint.sh

Если ваш компьютер не был включен в 00:00 3-го числа месяца, работа не будет работать до 6-го числа.

Чтобы работа вместо этого выполнялась на 4-м месте, когда компьютер выключен и «пропустил» прогон 3-го, вы должны использовать это в файле / etc / anacrontab (не забудьте удалить строку из / etc / crontab):

# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh

«Задержка» «5» выше означает, что анакрон будет ждать 5 минут, прежде чем он запустит это задание. Идея состоит в том, чтобы предотвратить запуск anacron сразу после загрузки.


61
2017-08-10 16:26



По умолчанию Ubuntu использует anacron. - 3dinfluence
спасибо, 3incluence - скорректированный ответ, чтобы указать, какие crontabs обрабатываются anacron в настройке ubuntu по умолчанию. - jeff
если вы поместите скрипт в /etc/cron.*/, вместо того, чтобы иметь собственную запись crontab, не имеете «.». в имени файла сценария. debian и ubuntu используют run-parts для запуска таких скриптов, и по умолчанию run-parts будут игнорировать файлы с. в имени файла - это так, что он не запускает версии сценариев .dpkg-old и .dpkg-dist, которые переименованы из обновлений. поэтому вызовите сценарий или символическую ссылку «maint», а не «maint.sh». - cas
OpenSUSE по умолчанию использует cronie с 11,2 года (до Tumbleweed / Leap 42.2 в настоящее время). Использовать anacron, установите cronie-anacron пакет. - palswim


Это зависит от того, какой cron планировщик вы используете. Основной, ванильный cron-демона не будет запускать задачи, которые были упущены из-за простоев системы. Однако есть другие планировщики cron, специально разработанные для этой ситуации, которые сделают это для вас. Два наиболее распространенных примера: Anacron а также Fcron,


11
2017-08-10 16:27





Задачи, запланированные при выключенном компьютере, не будут запускаться, когда компьютер снова включится


5
2017-08-10 16:26





Если вы остановились во время выполнения заданий cron, система выключится, и задания cron будут остановлены (или не будут выполняться).

Одна альтернатива, которую вы можете проверить, - анакрон.


2
2017-08-10 16:27





На самом деле это зависит от того, как вы работаете. Vixie-cron просто пропустит cronjobs, которые были пропущены. Fcron будет запускать пропущенные клоны, как только это возможно. IIRC также основан на vixie-cron, поэтому, если это то, что вы ищете, вы можете проверить fcron.


2
2017-08-10 16:35