Igorka лекція №26 - демон cron і команда crontab

Демон cron (вимовляється "крон") - це фоновий процес який дозволяє запускати на виконання файли в призначений час. Якщо необхідно, щоб із заданою періодичністю в системі запускався скрипт або програма, то це завдання для cron. Сьогодні ми розглянемо як налаштовувати демон cron вручну, а також за допомогою команди crontab.

Демон cron може запускати завдання не тільки для системи в цілому, а й для окремого користувача. Файли, які описують, що і коли буде запускатися для окремого користувача знаходяться в каталозі / var / spool / cron / crontabs /. Доступ до цього каталогу є тільки у користувача root.

Усередині каталогу / var / spool / cron / crontabs / для кожного користувача створюється текстовий файл на ім'я (логіну) користувача в якому і зберігаються настройки. Наприклад, якщо в системі є користувач test і він налаштовував для себе cron. то буде створений файл з настройками - / var / spool / cron / crontabs / test. Користувач test прямого доступу до цього файлу не має. Як створюється цей файл і редагується ми поговоримо пізніше (для цього використовується команда crontab).

Для того, щоб перевірити чи запущений процес cron виконайте команду:

$ Ps ax | grep # 91; c # 93; ron
1026. Ss 0: 00 cron

Якщо чорт не запущений запустити його можна як і будь-який інший демон командою /etc/init.d/cron start. виконаної від імені адміністратора.

Демон cron працює в похвилинному режимі. Тобто поставити час виконання того чи іншого завдання можна з точністю до однієї хвилини. Основний конфігураційний файл демона cron - це / etc / crontab. Основна частина файлу це таблиця в 7 стовпців, кожен рядок, якій описує одне завдання. Файли які описують завдання для демона cron. також часто називають crontab-файл.

Приклад файлу / etc / crontab:

# M h dom mon dow user command
17 * * * * root cd / run-parts --report / etc / cron.hourly
25 6 * * * root test -x / usr / sbin / anacron || # 40; cd / run-parts --report / etc / cron.daily # 41;
47 6 * * 7 root test -x / usr / sbin / anacron || # 40; cd / run-parts --report / etc / cron.weekly # 41;
52 6 1 * * root test -x / usr / sbin / anacron || # 40; cd / run-parts --report / etc / cron.monthly # 41;

Кожному рядку задаються значення 7-ми полів:

m - minute - хвилина - на якій хвилині виконувати завдання; діапазон значень - (0-59)
h - hour - година - о котрій годині виконувати завдання; діапазон значень (0-23)
dom - day of month - день місяця - в які дні місяця виконувати завдання; діапазон значень (1-31)
mon - month - місяць - в які місяці року виконувати завдання; діапазон значень (1-12)
dow - day of week - день тижня - в які дні тижня виконувати завдання; діапазон значень (0-7, 0 і 7 - цієї неділі, далі по порядку)
user - ім'я користувач - користувач від імені якого буде виконано завдання
command - співається команда - команда, яка буде запущена на виконання в зазначений час.

У перших п'яти полях можна вказувати не тільки число з діапазону, а й діапазон чисел, перерахування чисел, діапазон з кроком. Символ * - означає будь-яке значення. Детально почитати про значеннях можна в man 5 crontab. Ми ж розглянемо кілька прикладів.

Будьте уважні з полями 3 і 5 - день місяця і день тижня. Якщо числа є в обох полях, наприклад, * 6 5 * 1 root myscript. то запис означає запускати завдання о шостій годині 5-го числа кожного місяця або щопонеділка, але не щопонеділка 5-го числа.

crontab-файли також можуть міститися в каталозі /etc/cron.d/. який проглядається демоном cron в процесі роботи. Вони можуть мати довільні імена, але структура повинна бути така ж як і у файлу / etc / crontab. Зазвичай в цьому каталозі зберігаються завдання різних служб і програм (файли тоді називаються за іменами служб або програм).

29 12 * * * touch testfile

У першому другому полі вкажіть актуальне для вас час (на кілька хвилин більше поточного) і збережіть файл. Потім перевірте після призначеного часу, кореневу директорію користувача test і переконайтеся, що файл був створений: