cronie - Часові завдання
Передумови¶
- Комп’ютер під керуванням Rocky Linux
- Знати, як використовувати ваш улюблений редактор для зміни файлу конфігурації в середовищі командного рядка (у цій статті використовуватиметься
vi) - Ви зрозуміли базові знання bash, python або інших сценаріїв або інструментів програмування та очікуєте автоматичного запуску сценарію
- Ви підключилися до свого комп’ютера через SSH (це може бути користувач root або звичайний користувач з UID більше 1000)
Вступ до cron¶
GNU/Linux надає систему cron — програму завдань cron, що базується на часі, для автоматизованих процесів. Це не важко, але досить потужно. Хочете, щоб сценарій або програма запускалися щодня о 17:00? cron може це зробити. Існують різні гілки (або варіанти) cron, які мають однакові функції. У цьому документі використовується cronie, версія — 1.5.2. Натисніть тут, щоб знайти останню версію та оновити журнал.
Опис cronie¶
- cronie – назва пакета, Rocky Linux включає cronie за умовчанням;
- crontab – команда для підтримки
crontab(розклад завдань) для кожного користувача; - crond.service - демон cronie, ви можете керувати демоном за допомогою
systemctl start | restart | stop | status; - /etc/crontab -Призначити завдання cron різним користувачам, зазвичай ми звикли використовувати
crontab -e. Наприклад, якщо ви зараз увійшли в систему як користувач root, введітьcrontab -e, і після збереження ви побачите певні завдання cron у файлі /var/spool/cron/root. - /var/log/cron * - журнал cronie за замовчуванням виконує ротацію журналів та завершується суфіксом дати. Тут це означає символ підстановки.
- анакрон — частина слова «кроні». Для отримання додаткової інформації про
anacronдив. команди автоматизації anacron.
Команда crontab¶
crontab — це команда, яку можна отримати після встановлення пакета cronie. Порівняно з anacron, він більше підходить для серверів, які працюють цілодобово. Типові опції crontab:
-e # редагує заплановані завдання crontab
-l # Переглядає завдання crontab
-r # видаляє всі завдання crontab поточного користувача
Використання cronie¶
Запис команд або сценаріїв у цей файл дозволяє їм запускатися в різний час. Однак, зазвичай ми більше звикли використовувати crontab -e.
shell > cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0-59)
# | .------------- hour (0-23)
# | | .---------- day of month (1-31)
# | | | .------- month (1-12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0-6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
| Параметр | Значення | Діапазон значень |
|---|---|---|
| 1-ий * | Перша хвилина години | 0-59 |
| 2-ий * | Година дня | 0-23 |
| 3-ій * | День місяця | 1-31 |
| 4-ий * | Місяць року | 1-12 |
| 5-ий * | День тижня | 0-7 (0 і 7 позначають неділю) |
У наведеному нижче прикладі, припускаючи, що ви виконуєте цю операцію як користувач root, введіть наступне:
- Команда
crontab -eпокаже завдання з часовим обмеженням для користувача root. Якщо ви використовуєтеviяк системний редактор за замовчуванням, натисніть клавішу I, щоб увійти в режим вставки. - "#" означає, що це рядок коментаря.
# Система резервного копіювання щоночі о 10:00
00 22 * * * /usr/local/sbin/backup
- Після введення цього рядка (знову припускаючи, що
viє системним редактором), натисніть Esc, щоб вийти з режиму вставки - Збережіть і закрийте свій файл за допомогою Shift+:+w+q+! (відображається внизу редактора).
Тепер сценарій запускатиметься щовечора о 22:00. Це спрощений приклад. Речі можуть стати складнішими, якщо вам потрібно щось складніше.
Увага
Сценарій повинен мати дозвіл на виконання (chmod +x), перш ніж cronie зможе його запустити.
Комплексні параметри¶
Вміст, який обговорювався досі, є спрощеними варіантами, але як щодо складніших завдань із розподілом часу?
# Припустімо, що ви хочете запускати сценарій резервного копіювання кожні 10 хвилин (проте це може бути непрактично, це лише приклад!) Впродовж дня. Для цього буде написано наступне:
* /10 * * * * /usr/local/sbin/backup
#Що робити, якщо ви хочете виконувати резервне копіювання лише кожні 10 хвилин у понеділок, середу та п’ятницю? * /10 * * * 1,3,5 /usr/local/sbin/backup
# Окрім суботи та неділі, раз на 10 хвилин, щодня, як робити резервну копію?
* /10 * * * 1-5 /usr/local/sbin/backup
| Спеціальні символи | Значення |
|---|---|
* |
представляє будь-який час. Наприклад, перша * означає будь-яку хвилину, а друга * — будь-яку годину |
, |
позначає переривчастий час, наприклад 0 8,12,16 * * *, що означає, що команда виконуватиметься щодня о 8:00, 12:00 та 16:00 |
- |
представляє безперервний діапазон часу, наприклад 0 5 * * 1-6, що означає, що команда виконуватиметься о п'ятій годині ранку щодня з понеділка по суботу |
*/n |
Позначає, як часто виконуватиметься інтервал, наприклад */10 * * * * означає, що це кожні 10 хвилин |
Увага
Найменша одиниця часу, яку може розпізнати приятель, це 1 хвилина; якщо використовувати, наприклад, команду 30 4 1,15 * 5, це призведе до виконання команди 1-го та 15-го числа кожного місяця та о 4:30 ранку кожної п'ятниці; Вихідна інформація деяких сценаріїв або команд перешкоджатиме виконанню завдань, визначених у часі, і потрібне перенаправлення виводу, як-от */10 * * * * /usr/local/sbin/backup &> /dev/null
Q і A¶
- /etc/crontab та
crontab -e, чи є якась різниця між цими двома методами?crontab -eне потребує вказівки користувача (за замовчуванням використовується поточний зареєстрований користувач), тоді як /etc/crontab має вказувати користувача. - Що робити, якщо вказана команда або сценарій не виконується належним чином?
Перевірте файл /var/log/cron*, скористайтеся командою
journalctl -u crond.service, щоб перевірити інформацію про процес демона, чи має скрипт права x тощо, для усунення несправностей. - Крім cronie, які існують варіанти cron? fcron, the latest version is 3.3.0 (dev, 2016-08-14). cronsun, остання версія 0.3.5 (2018-11-20).
Підсумок¶
Для користувачів настільних ПК Rocky Linux або системних адміністраторів cronie є дуже потужним інструментом. Це дозволяє вам автоматизувати завдання та сценарії, щоб вам не довелося запускати їх вручну. Хоча базові знання не важкі, фактичне завдання може бути складним. Для отримання додаткової інформації про crontab відвідайте сторінку довідника crontab. Ви також можете пошукати "crontab" в Інтернеті, що надає багато результатів пошуку та допомагає вам точно налаштувати вираз crontab.
Author: tianci li
Contributors: Steven Spencer, Ganna Zhyrnova