Сьогодні ми розповімо про переваги планувальника cron. Отже, cron - один із найкорисніших інструментів у Linux або UNIX. Він використовується для планування завдань, які будуть виконуватися періодично. Крім того, Ви можете налаштувати команди або сценарії, які повторюватимуться в заданий час. Служба (daemon) cron працює у фоновому режимі і постійно перевіряє файл /etc/crontab
, а також каталоги /etc/cron.*/
і /var/spool/cron/
.
Команда crontab
crontab
- це команда Linux, що дає змогу створювати, видаляти та переглядати файл конфігурації для служби cron. Кожен користувач може створити свій власний файл завдань, що зберігається в каталозі /var/spool/cron/crontabs
.
Важливо: файл crontabs не призначений для прямого редагування - редагуйте список завдань тільки за допомогою команди crontab
, щоб планувальник cron працював коректно.
Типи файлів конфігурації cron
Існують два типи файлів конфігурації служби cron:
crontab
. Зазвичай використовується системними службами і критичними завданнями, що вимагають привілеїв root-доступу.crontab
складаються з полів. П'ять із них заповнені даними про час, а в шостому полі вказується ім'я користувача, від якого запускається команда. Тобто crontab
дає системі можливість запускати команди від імені різних користувачів.crontab
. Користувач може встановити свої власні завдання в планувальнику сгоп, використовуючи команду crontab
.crontab
.
Як встановити, створити або відредагувати власні завдання crontab
Щоб відредагувати файл crontab, введіть таку команду в командному рядку оболонки Unix / Linux:
crontab –e
Синтаксис crontab (опис полів)
Синтаксис:
1 2 3 4 5 /path/to/command arg1 arg2
Наприклад:
1 2 3 4 5 python3 main.py
Де цифри позначають:
1: Хвилини (0-59)
2: Години (0-23)
3: День (0-31)
4: Місяць (0-12 [12 == грудень])
5: День тижня (0-7 [7 або 0 == sunday])
/path/to/command
— ім'я скрипта або команди для виконання за розкладом
Формат, який легко запам'ятовується:
* * * * * * * Команда, яку буде виконано
- - - - -
| | | | |
| | | | | - День тижня (0 - 7) (неділя = 0 або 7)
| | | | --- Місяць (1 - 12)
| | --- День місяця (1 - 31)
| ---- Година (0 - 23)
----- Хвилина (0 - 59)
Приклад:
# виконання скрипта myscript кожні 5 хвилин #
*/5 * * * * * * /root/myscript.sh
# виконання скрипта myscript кожен день о першій годині ночі #
0 1 * * * * /root/myscript.sh
# виконання скрипта кожного місяця першого числа о третій годині ночі п'ятнадцять хвилин #
15 3 1 * * * /root/myscript.sh
Як використовувати оператори
Оператор дає змогу вказати кілька значень у полі. Існують чотири оператори:
Замість перших п'яти полів Ви можете використовувати будь-який з восьми спеціальних рядків. Планувальник cron дозволяє таке налаштування. Це не тільки заощадить Ваш час, а й поліпшить читабельність.
Спеціальний рядок | Значення |
@reboot | Запускається тільки один раз під час запуску. |
@yearly | Запускається раз на рік, "0 0 1 1 1 *". |
@annually | Таке саме, як у @yearly |
@monthly | Запускається раз на місяць, "0 0 1 1 * *". |
@weekly | Виконується раз на тиждень, "0 0 * * 0". |
@daily | Виконується один раз на день, "0 0 * * *". |
@midnight | Таке ж, як у @daily. |
@hourly | Запускається один раз на годину, "0 * * * *". |
Приклад:
# Запуск main.py щогодини #
@hourly python3 main.py
Детальніше про файл /etc/crontab і /etc/cron.d/*
/etc/crontab
- це файл сrontab
системи. Зазвичай використовується тільки користувачем root або для налаштування системних завдань. Звичайні користувачі повинні використовувати команду crontab
для встановлення та редагування своїх завдань.
/var/spool/cron/
або /var/cron/tabs/
- це каталог для особистих файлів користувача crontab
.
Типові записи файлу /etc/crontab:
SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Насамперед необхідно визначити оболонку для виконання завдань. Якщо покажчик оболонки відсутній - cron використовуватиме значення за замовчуванням (а саме - sh
). Якщо змінна PATH
не вказана - розташування файлів вважатиметься абсолютним. Якщо змінна HOME
не вказана - cron використовуватиме для роботи домашній каталог.
Крім того, cron зчитує файли в каталозі /etc/cron.d/
. Зазвичай це файли демона системи, такі як sa-update
або sysstat
. Як користувач root, для налаштування завдань cron, Ви можете використовувати каталоги, які вказані нижче. Крім цього, тут Ви можете безпосередньо запускати свої скрипти. Команда run-parts
запускає скрипти або програми в каталозі через файл /etc/crontab
:
Каталог | Опис |
/etc/cron.d/ |
Помістіть у цю директиву всі скрипти і викличте їх із файлу /etc/crontab |
/etc/cron.daily/ |
Запуск усіх скриптів один раз на день |
/etc/cron.hourly/ |
Запуск усіх скриптів один раз на годину |
/etc/cron.monthly/ |
Запуск усіх скриптів один раз на місяць |
/etc/cron.weekly/ |
Запуск усіх скриптів один раз на тиждень |
Збереження списку завдань у файл
Зберегти список завдань можна за допомогою такої команди:
# crontab -l > /path/to/file
# crontab -u user -l > /path/to/file
Висновки
Дякуємо за час, приділений на прочитання статті! Тепер Ви знаєте про те, як додавати та налаштовувати завдання в Linux за допомогою планувальника cron. Крім того, Ви навчилися користуватися синтаксисом і операторами crontab. Сподіваємося, ці знання та навички будуть корисні як для особистого користування, так і для системного адміністрування Linux.
Переклад.
Джерело: https://blog.sedicomm.com/2017/07/24/kak-dobavit-zadanie-v-planirovshhik-cron-v-linux-unix/