Cron – програма unix-подібних операційних систем, яка дозволяє виконувати команди або скрипти за розкладом. Аналогом є Window’ий “Планувальник завдань”. Cron працює у фоновому режимі і постійно (а якщо вже точно, то кожну хвилину) перевіряє свої файли конфігурації щодо виконання будь-яких дій, описаних у них.
Для керування завданнями cron використовується команда crontab та файл /etc/crontab. Про їхню відмінність поговоримо далі. Для початку розберемося з директоріями та файлами налаштування cron. Файли crontab, які використовуються для керування всією системою, знаходяться в каталозі /etc/cron.d/. Також у каталогах /etc/cron.daily/, /etc/cron.weekly/ і /etc/cron.monthly/ знаходяться програми, які автоматично запускаються щодня, щотижня та щомісячно відповідно. Файли, які створює crontab, в залежності від системи, лежать тут /usr/spool/cron/crontabs/ або тут /var/spool/cron/tabs/. Вручну їх редагувати не потрібно, тому що для цього є команда crontab -e. Ну і файл /etc/crontab, який зазвичай використовується системними службами або завданнями, яким потрібні root-права. Редагувати самому цей файл можна, але не рекомендується.
Синтаксис файлу crontab виглядає так:
* * * * * команда, яка буде виконуватись - - - - - | | | | | | | | | ----- День тижня (0 - 7) (Неділя =0 або =7) | | | ------- Місяць (1 - 12) | | --------- День (1 - 31) | ----------- Години (0 - 23) ------------- Хвилини (0 - 59)
[tds_note]Кількість пробілів між зірочками не має значення[/tds_note]
Для редагування, як я вже писав вище, використовується команда crontab -e. Ця команда створить файл з ім'ям користувача в каталозі /usr/spool/cron/crontabs/ або /var/spool/cron/tabs/ в залежності від системи з правами 600, або відкриє його на редагування, якщо він вже існує. Також за допомогою команди crontab -l ми можемо переглянути раніше відредагований файл, а за допомогою crontab -r видалити файл crontab для поточного користувача. Розглянемо приклади: Такий запис свідчить, що файл test.txt кожну хвилину буде додаватися запис "Ho-Ho-Ho"
* * * * * echo "Ho-Ho-Ho" >> /home/user1/test.txt
Те саме, щодня о 9.30 ранку
30 9 * * * echo "Ho-Ho-Ho" >> /home/user1/test.txt
[tds_info]Ми можемо вказувати періодичність (*/), діапазони (-) або списки значень (,) за допомогою роздільників[/tds_info]
Виконувати кожні 15 хвилин
*/15 * * * * echo "Ho-Ho-Ho" >> /home/user1/test.txt
Виконувати по буднях о 20.47
47 20 * * 1-5 echo "Ho-Ho-Ho" >> /home/user1/test.txt
Виконувати 12.10, 14.10 та 16.10 кожні 3 місяці 5 числа
10 */12,14,16 5 */3 * echo "Ho-Ho-Ho" >> /home/user1/test.txt
Виконувати тільки по парних днях кожного Січня, Березня та Квітня опівночі
0 0 2-31/2 1,3,4, * echo "Ho-Ho-Ho" >> /home/user1/test.txt
Думаю цих прикладів буде більш-менш достатньо, щоби зрозуміти загальний принцип роботи cron. Для перевірки правильності складання виразу crontab на просторах інтернету існує багато різних сайтів-валідаторів, які допоможуть нам перевірити все, що ми написали. Одним із таких, яким я користуюся, є https://crontab.guru/. Можу сміливо і вам рекомендувати його.