Налаштування планувальника cron у Linux / UNIX

Сьогодні ми розповімо про переваги планувальника 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:

  1. Системний файл crontab. Зазвичай використовується системними службами і критичними завданнями, що вимагають привілеїв root-доступу.
    Системні файли crontab складаються з полів. П'ять із них заповнені даними про час, а в шостому полі вказується ім'я користувача, від якого запускається команда. Тобто crontab дає системі можливість запускати команди від імені різних користувачів.
  2. Користувацький 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

 

Як використовувати оператори

Оператор дає змогу вказати кілька значень у полі. Існують чотири оператори:

  • Зірочка (*): цей оператор задає всі можливі значення для поля. Наприклад, зірочка в полі "Години" буде еквівалентна кожній годині, а зірочка в полі місяця буде еквівалентна кожному місяцю і т.д.
  • Кома (,): Цей оператор задає список значень, наприклад: "1,5,10,15,20,25".
  • Тире (-): Цей оператор задає діапазон значень, наприклад:
    "5-15" днів, що еквівалентно набору "5,6,7,8,9 ... ... ..., 13,14,15", у разі використання оператора "Кома".
  • Слеш (/): цей оператор задає значення кроку, наприклад: "0-23 /" можна використовувати в полі годин, щоб вказувати виконання команди щогодини. Кроки також дозволені після зірочки, тому, якщо Ви хочете виконувати щось кожні дві години, просто використовуйте "*/2".

Замість перших п'яти полів Ви можете використовувати будь-який з восьми спеціальних рядків. Планувальник 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/

Сервер
486
19.11.2023
Leave a Comment
Comments
Linux Server