Дуже часто в Linux-подібних системах може знадобитися автоматизувати деякі рутинні процеси. Для цього застосовуються спеціальні планувальники. Одним з найбільш відомих із них є Cron, налаштування якого і піде мова в цій статті.
Що являє собою Cron?
Назва програми утворене від грецького «хронос», що означає час. Що, власне, логічно. Завдання демона — в певні моменти виконувати записані в нього команди. Сам процес реалізації заснований на перевірці таблиць крона і порівнянні їх з поточними датою і часом.
Файл crontab
Самим головним елементом установки Cron є конфігураційний файл crontab. Він містить у собі команди виконання і шляхи до скриптів. Всі вони запускаються від імені суперкористувача. Так як вони розташовані в директорії /etc/cron.d, налаштування цих файлів повинна проводитися саме там.
Для кожного окремого користувача системи використовується файл crontab. Різні дистрибутиви Linux використовують свої каталоги для зберігання призначених для користувача налаштувань. Для RedHat це — var / spool/cron. В Debian і Ubuntu це буде var/spool/cron/crontabs. І var/spool/cron/tabs в SUSE.
Список команд для управління crontab
Cron має набір спеціальних директив, з допомогою яких можна керувати планувальником. Застосовувати їх потрібно в зв'язці з crontab. Ось невеликий список: -u ім'я_користувача. Встановлює користувача, завданнями та налаштуваннями якого будуть проводитися подальші дії. Якщо опустити цей ключ, то буде поставлено користувач за замовчуванням. -l. Виведе поточний список завдань. -e. Робить запуск редактора для планувальника завдань. -r. Видаляє всі наявні завдання зі списку.
Формат завдання
Як було сказано вище, Cron полягає в завданні команд у спеціальному файлі. Виглядає це як проста запис, що складається з шести колонок:
в першій вказується кількість хвилин. Доступний інтервал — від 0 до 59. Можна використовувати декілька значень, діапазон і спеціальні символи; друга колонка — годинник. Можуть використовуватися значення від 0 до 23; далі — день. Тут можна вказати число від 1 до 31; четвертий — місяць. Мінімальне значення 1 максимальна — 12; п'ята — тиждень. 0 або 7 відповідає неділі; останньою йде сама виконувана команда. Як було згадано, у файлі можна вказати спеціальні символи «*» або «/». Наприклад, такий запис— 23 */2 *** echo «Виконати» означає, що кожний парний годину 23 хвилини відображатиметься напис «Виконати».
Особливості файлу crontab
При налаштуванні Cron необхідно пам'ятати, що він володіє специфічними властивостями, які варто враховувати при конфігуруванні: кожен файл обов'язково повинен завершуватися порожнім рядком, інакше останній пункт може бути проігнорований, а іноді і цілком весь файл; файли, розміщені в каталогах, які мають в імені точку, також будуть проігноровані планувальником; у файлах налаштування можна використовувати символи решітки «#». Вони застосовуються для того, щоб позначити рядки з коментарями. Це дуже зручно для опису запланованих завдань і команд.
Додаткові змінні
При налаштуванні Cron можна застосовувати в командах спеціальні значення і скорочення. Наприклад, для визначення дня тижня можна використовувати наступний список:
sun — неділя; mon — понеділок; tue — вівторок; wed — середовище; thu — четвер; fri — п'ятниця; sat — субота. Для місяців також є окремі літерні значення — jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.
Також для налаштування Cron є окремі змінні, здатні замінити цілі рядки команд: @reboot. Команда стартуватиме кожен раз при запуску комп'ютера; @yearly. Дана задача буде запускатися один раз в рік. Еквівалентна їй запис в числовому вигляді може бути такою: 001 1 *. Її синонім ще можна записати як @annually; @monthly. Як можна здогадатися з назви, дана змінна робить запуск команди раз в місяць. Її числовий аналог— 001 * *; @weekly. Ця змінна буде запускатися щотижня; @dayly. Раз в день; @midnight. Запуск буде проведений опівночі; @hourly. Кожну годину.
Cron в Centos 7
Сам процес установки і конфігурування мало чим відрізняється від інших схожих Linux дистрибутивів. Перед налаштуванням Cron Centos необхідно встановити пакет cronie в систему. Зробити це можна за допомогою команди yum install cronie. Для створення файла з інструкціями потрібно виконати в терміналі crontab -e. Всі системні налаштування Cron будуть зберігатися за адресою /var/spool/cron/ім'я користувача.
Кілька корисних прикладів для створення часто повторюваних завдань
Можна провести настройку Cron таким чином, щоб охопити практично всі потреби будь-якого користувача. 0009-17 * * 1 - 5 /шлях/до команди/крона. Дана команда буде автоматично виконувати заплановане дію кожен робочий день з 9 до 5 годин кожну першу хвилину; 00917 * * * /шлях/до команди/крона. У цьому прикладі відбувається виконання команди два рази в день. Перший в 9 другий - до 5 годин. Знак «*» показує, що команда буде виконуватися кожен день, місяць і рік; Також не варто забувати і про символьні змінні. Наприклад, @monthly буде виконувати завдання кожен місяць в першу хвилину першої години першого дня. А @daily буде запускатися кожен день.
Відгуки користувачів про планувальнику Cron
Як правило, для рядових і недосвідчених користувачів Cron являє собою всього лише набір символів. Але от для системних адміністраторів і завзятих «линуксоидов» дана утиліта є незамінним помічником. Багато відзначають гнучкість і продуктивність добре налагодженої системи.
З допомогою Cron можна автоматизувати рутинні процеси, які надто складно виконувати вручну через певні проміжки часу. Будь то створення бекапів системи або її оновлення. Проте є і невеликі нюанси. Наприклад, деякі сисадміни зазначають, що було б непогано мати в планувальнику можливість реалізації команд кожну секунду. Але розробники програми не раз давали зрозуміти, що дану опцію впроваджувати вони не будуть. Початківці зазвичай губляться у великій кількості налаштувань і складнощів при запуску демона планувальника. Для них є більш зрозумілі оболонки. Наприклад, для дистрибутивів, заснованих на Debian, їй може стати gnome schedule. KDE версія називається kcron.
Висновки
В цілому, Cron є відмінним інструментом для автоматизації багатьох рутинних процесів і полегшення роботи з системою. Для тих, хто недолюблює командний рядок і тонкощі ручного налаштування конфігураційних файлів, є кілька різновидів Cron у графічній оболонці, що спрощують взаємодію. В інших операційних системах також є свої версії планувальників, наприклад, в середовищі Windows це NnCron. Ще один аналог — Task Scheduler. Він також доступний у лінійці систем від Microsoft. А його консольна версія — schtasks.exe.