Планування роботи за допомогою crontab, що буде, коли комп'ютер вимкнеться за цей час?


85

Я планую деякі завдання за допомогою crontab.

Що станеться, якщо мій комп'ютер вимкнеться або вимкнеться під час, коли заплановано щось робити cron?

Чи пропущено кожне пропущене завдання в галузі після включення комп'ютера, або пропущені завдання за цей день ігноруються? Якщо пропущені завдання не поновлюються, чи є спосіб налаштувати cron таким чином, що він виконує пропущені завдання після того, як комп'ютер знову буде включений?


3
Я спробував шукати підручник з анакроном в Інтернеті, але не зміг знайти жодного хорошого. Дивлячись на сторінки чоловіків, також мені не дуже допомогли. Як я можу змінити вже існуючий crontab, щоб він був змінений на anacron ?? Або будь-який підручник з цього буде дуже корисним
seg.server.fault

1
Я відредагував свою відповідь, щоб включити кілька прикладів. Я сподіваюся, що це допомагає!
jeff

Відповіді:


70

Коли комп'ютер вимкнений (або демон демон не працює), завдання cron не будуть запущені.

Якщо у вас є завдання, які ви хотіли б виконати після факту в ті часи, коли комп'ютер вимкнений, використовуйте анакрон. За встановленням за замовчуванням див. "Man anacron", "man anacrontab" або файл / etc / anacrontab для отримання додаткової інформації.

Ubuntu за замовчуванням використовує anacron для записів crontab у:

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

залишаючи решту кронати для обробки основного демона, зокрема:

/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 має трохи більше інформації, ніж міститься в маніпуляціях.

ПРИКЛАДИ

Для простих "щоденних", "щотижневих", "щомісячних" завдань помістіть копію або символьне посилання на скрипт в один з каталогів /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 хвилин, перш ніж він виконає цю роботу. Ідея полягає у тому, щоб не допустити анакрону негайно вистріляти речі під час завантаження.


5
За замовчуванням Ubuntu використовує анакрон.
3вплив

1
спасибі, 3dincluence - скоригована відповідь, щоб вказати, які кронтабули обробляються анакроном у sebubu ubuntu за замовчуванням.
jeff

2
якщо ви ставите скрипт у /etc/cron.*/, а не у власному записі crontab, не майте "." у імені файлу сценарію. debian та ubuntu використовують запущені частини для запуску таких сценаріїв, а запускні частини за замовчуванням будуть ігнорувати файли з а. в імені файлу - це так, що він не запускає .dpkg-стару та .dpkg-dist версії сценаріїв, які перейменовані на оновлення. тому називайте сценарій або символьне посилання "maint", а не "maint.sh".
cas

OpenSUSE використовує кроні за замовчуванням з 11.2 і надалі (зараз Tumbleweed / Leap 42.2). Для використання anacronвстановіть cronie-anacronпакет.
palswim

13

Це залежить від того, який планувальник cron ви використовуєте. Основний демон-ванільний крон не буде виконувати завдання, які були пропущені через час простою системи. Однак є й інші планові програми cron, спеціально розроблені для цієї ситуації, які зроблять це для вас. Два найбільш поширених прикладів Anacron і Fcron .


5

Завдання, заплановані під час вимкнення комп’ютера, не виконуватимуться, коли комп'ютер увімкнеться знову


2

Якщо ви припините роботу під час виконання завдань cron, система вимикається, а завдання cron припиняються (або не працюють).

Однією з альтернатив, яку ви можете перевірити, є анакрон.


2

Дійсно залежить від cron deamon ви керуєте. Vixie-cron просто пропустить кройовки, які були пропущені. fcron запустить пропущені крони, як тільки зможе. IIRC також базується на vixie-cron, тому, якщо саме це ви шукаєте, ви можете перевірити fcron.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.