cron - це стандартний інструмент в операційних системах UNIX та UNIX-подібних системах, який дозволяє виконувати завдання на основі попередньо встановленого розкладу. Це незамінний інструмент для автоматизації повторюваних завдань, таких як оновлення бази даних, копіювання файлів, надсилання звітів тощо.
Принцип роботи cron базується на використанні файлу crontab, який містить інформацію про завдання, які повинні бути запущені за розкладом. Коли системний час відповідає одному із заданих моментів часу в crontab, cron запускає завдання відповідно до зазначених параметрів.
Синтаксис crontab дуже гнучкий і дозволяє задавати розклад завдань в різних форматах. Він складається з п'яти полів: хвилини, години, дні місяця, місяці та дні тижня. Кожне поле може містити окреме значення, представлене числом або символом "*", що означає "Кожен". Комбінування цих полів дозволяє створювати найрізноманітніші розклади виконання завдань.
Принципи роботи cron
Основою роботи cron є файл crontab (cron table), який містить завдання на виконання завдань. Цей файл може бути різним для кожного користувача. Його можна редагувати за допомогою команди crontab-e, яка відкриє файл у текстовому редакторі.
Crontab представляє з себе таблицю, в якій для кожного завдання вказується час її виконання і команда, яку потрібно виконати. Час задається в форматі "хвилина годину день місяць день_неделі". Щоб завдання виконувалося регулярно, можна використовувати символ"*", який означає Будь-яке значення. Наприклад, щоб завдання виконувалося кожну хвилину, можна вказати "* * * * *".
У crontab також можуть бути задані змінні оточення, які будуть доступні при виконанні завдань. Це може бути корисно, наприклад, встановити шлях до виконуваного файлу або вказати значення для певних змінних.
Крім того, в crontab можна вказати команду, яка буде виконана перед запуском завдання. Це може бути корисно, якщо потрібно виконати якусь попередню настройку або перевірку перед роботою завдання.
Початкове призначення
Основна ідея cron полягає в тому, щоб задати час або періодичність виконання завдання у вигляді текстового файлу, відомого як "crontab", який потім буде інтерпретований і виконаний системою cron.
Час виконання завдання визначається за допомогою спеціального синтаксису, що складається з п'яти або шести полів (хвилини, години, дні місяця, місяці, дні тижня, роки), розділених пробілами або табуляцією. Кожне поле може містити одне або кілька значень або діапазонів значень.
Наприклад, якщо потрібно виконати завдання щодня о 10 ранку, можна вказати "0 10 * * *" . Якщо потрібно виконати завдання щогодини, можна вказати "0 * * * *" . Якщо потрібно виконати завдання щопонеділка о 15 годині, можна вказати" 0 15 * * 1". І так далі.
Cron також дозволяє використовувати спеціальні символи (наприклад, символи зірочки і слеша) для вказівки повторюваних патернів і періодичностей.
Використання cron може значно спростити життя системного адміністратора та автоматизувати велику кількість повторюваних завдань. Він є незамінним інструментом для обслуговування серверів і виконання різних фонових процесів.
Як працює cron в UNIX-системах
Робота cron заснована на використанні файлу crontab, в якому визначаються завдання, що підлягають виконанню. Кожен користувач системи може мати свій власний файл crontab, в якому містяться його особисті завдання.
Формат запису завдання у файлі crontab досить простий і має таку структуру:
- Хвилина: від 0 до 59
- Години: від 0 до 23
- Дні місяця: від 1 до 31
- Місяць: від 1 до 12 або січ, лют, мар і т. д.
- Дні тижня: від 0 до 6 або sun, mon, tue і т. д.
- Команда: команда, яку потрібно виконати
Наприклад, наступний запис у файлі crontab запускає команду "backup.sh" кожен день о 3: 00 ночі:
0 3 * * * /path/to/backup.sh
Якщо запис у файлі crontab містить знак зірочки"*", це означає, що завдання буде виконуватися в будь-який час. За допомогою таких записів можна налаштувати планування виконання завдань з різними інтервалами часу.
Крім того, cron дозволяє використовувати спеціальні ключові слова для більш гнучкого планування завдань. Наприклад, ключове слово " @daily "еквівалентно запису" 0 0 * * *" , Що означає виконання завдання щодня опівночі.
Стандартні інсталяції UNIX-систем вже мають попередньо встановлений демон cron, який запускається при завантаженні системи і перевіряє файли crontab кожну хвилину, щоб визначити, які завдання потрібно виконати.
Хоча cron зазвичай використовується для автоматизації рутинних завдань і системних завдань, його гнучкість і простота використання дозволяють застосовувати його в широкому спектрі сценаріїв, починаючи від простих скриптів до складних системних процесів.
Приклади використання cron
графік cron, заснований на фіксованому часі, може використовуватися для запуску завдань у певний час кожного дня, тижня, місяця чи року. Наприклад, можна налаштувати cron для регулярного резервного копіювання бази даних або надсилання звітів електронною поштою щодня в певний час.
Крім того, крон може бути використаний для виконання завдань з певною періодичністю. Наприклад, можна налаштувати cron для запуску сценарію щохвилини, щогодини або щовечора в певний час.
Крім того, можна використовувати cron для запуску завдань після певної події. Наприклад, можна налаштувати cron на виконання команди після успішного завершення попереднього завдання або після певної зміни у файловій системі.
Для більш складних сценаріїв використання можна комбінувати різні опції cron, щоб налаштувати завдання на виконання в певний час з певною періодичністю або після певних подій.
Приклад 1: Запуск сценарію щодня о 15: 00:
0 15 * * * /path/to/script.sh
Приклад 2: Запуск сценарію щосуботи о 10: 30:
30 10 * * 6 /path/to/script.sh
Приклад 3: Запуск скрипта кожну хвилину:
Приклад 4: Запуск скрипта щогодини з 8:00 до 17: 00:
0 8-17 * * * /path/to/script.sh
Приклад 5: Запуск скрипта щогодини з другого по сьомий день місяця:
0 * 2-7 * * /path/to/script.sh
Також можна використовувати символи " * " та " / " для більш гнучкого налаштування розкладу cron. Наприклад, символ " * "означає" Будь-яке значення", а символ " / "означає"Крок". Таким чином, можна налаштувати cron для запуску завдань кожні 5 хвилин або кожні 2 години.
Примітка: для налаштування cron потрібні права адміністратора або доступ до файлу cron.