Найбільш поширений засіб планування завдань cron. В даний час існує безліч модифікацій цього демона. Можете самі в цьому переконатися (на цій сторінці).У цій статті я розповім про двох найбільш поширених реалізаціях: Vixie cron (зазвичай його називають просто cron) і anacron.

Vixie Cron, або просто Cron.
Cron запускає команди в зазначений час. Час запуску задають п’ять параметрів: хвилини, години, місяці, дні, місяці, дні тижня. Кожну хвилину cron порівнює поточний час з часом запланованого запуску команд. Якщо вони збігаються команда виконується. Команди, і час їх виконання зберігаються у crontab-файлах (далі кронтабы). Є два види кронтабов: користувацькі і системні. Cron переглядає всі кронтабы системи кожну хвилину. Таким чином, після додавання нових завдань, не потрібно перезапускати демон.
Користувальницькі кронтабы розташовані в каталозі /var/spool/cron. Назва кронтаба відповідає імені користувача. Розглянемо можливий кронтаб:

#/var/spool/cron/scamelscrud
#Begin of scamelscrud’s crontab

#Змінні оточення
SHELL=/bin/bash
HOME=/home/scamelscrud
MAILTO=scamelscrud
PATH=/bin:/usr/bin:$HOME/bin

#список команд
01 10 5 12 Fri echo В грудні я бачу цей текст 5 числа і кожну п’ятницю.”
12 23 * * Mon monday-script.sh
00 15 30 5 * echo З Днем народження!

#End of scamelscrud’s crontab

Всі рядки після знака # розглядаються як коментар. Коментарі та порожні рядки ігноруються cron’ом. Можна оголошувати змінні оточення.
SHELL шелл, який буде інтерпретувати ваші команди.
HOME домашня директорія.
MAILTO користувач, якому буде відправлений поштою весь вивід програм, що запускаються cron’ом.
PATH шлях пошуку для команд.
За замовчуванням, змінної SHELL присвоюється значення /bin/sh, змінні HOME і LOGNAME (цю змінну змінювати не можна) встановлюються у відповідність з файлом passwd в каталозі /etc. Якщо відсутнє значення змінної MAILTO (MAILTO=) cron не відправляє поштові повідомлення. Якщо змінну MAILTO взагалі опустити, то cron відправить пошту власнику кронтаба.
Далі в кронтабе бачимо три рядки час і команду, яка буде виконана.Кожна з таких рядків включає в себе шість. обов’язкових для заповнення полів, розділених пробілом або символами табуляції.
1-е поле хвилини. Можливі значення від 0 до 59.
2-е поле годинник. Можливі значення від 0 до 23.
3-е поле день місяця. Можливі значення від 1 до 31.
4-е поле місяць. Можливі значення від 1 до 12, або абревіатури з трьох букв (dec, oct, nov…)
5-е поле-який день тижня. Можливі значення від 0 до 7 (0 і 7 відповідає неділі), або абревіатури з трьох букв (sun, mon, tue…)
6-е поле команда. Власне сама команда. Це полі триває до кінця рядка і всі символи в ньому будуть інтерпретовані вашим шелом.
У кожному з перших п’яти полів допускаються діапазони і перерахування. Приклад:

0-59/10 11,12,20 15-18 * * mv -f newfile oldfile

Тут:
11,12,20 перерахування
15-18 діапазон.
* — теж діапазон від мінімуму до максимуму, тобто, враховуються всі можливі значення.Для діапазону можна використовувати крок. У полі день тижня (5-е поле) * має інше значення, про це дивіться трохи нижче.
Для діапазону можна використовувати крок. 0-59/10 означає кожні десять хвилин (це еквівалентно */10).
Діапазони і перерахування можна вживати разом в одному полі. Наприклад, у полі годинник введемо 8-12/2,16-19,23. Ця запис говорить про те, що запуск буде проводиться з 8 до 12 кожні дві години, потім з 16 до 19 кожну годину і ще раз в 23 години.
День виконання можна задати двома способами: днем місяця і днем тижня. Для однозначного завдання дня виконання слід заповнювати одне із полів *. У цьому випадку * не розглядається cron’ом діапазон, навпаки cron буде це поле ігнорувати. Якщо задані й день місяця і день тижня, то програма буде виконуватися і в зазначені дні тижня і в зазначені дні місяця.

0 12 15 sep mon echo Виконується 15 вересня і кожен понеділок вересня.
0 12 * * wen echo Виконується кожну середу

Тепер про зміну користувача кронтабов. Як було сказано вище, кронтабы зберігаються в /var/spool/cron. Цей каталог закритий на читання всім, крім рута, і руками файли там простому користувачеві не підправити. Тому для цих цілей використовують програму crontab. Crontab керується файлом в каталозі /etc. Це може бути або файл cron.allow або cron.deny. Якщо існує файл cron.deny, то користувачам перерахованим там заборонено використовувати програму crontab і створювати свої кронтабы. Якщо існує файл cron.allow використовувати програму crontab заборонено всім користувачам, крім тих, які перераховані в цьому файлі.
Якщо все в порядку і права на використання crontab є можна редагувати кронтаб:
$crontab -e
Переглядати кронтаб:
$crontab -l
Видалити кронтаб:
$crontab -r
Створити новий кронтаб, використовуючи заздалегідь підготовлений файл:
$file crontab
Рут може працювати з кронтабами всіх користувачів:)
#crontab -u username -e
Природно до програми crontab є безліч фронтендів (google.com до ваших послуг). Мені на очі попалася kcron… відрази не викликало.
Системний кронтаб (/etc/crontab) містить у собі сім полів. Перші п’ять полів дата і час (так само як і в користувальницькому), шосте поле користувач, від імені якого виконується команда, сьоме поле сама команда.
Запускається cron зазвичай автоматично, тобто це має бути враховано у вашому runlevel’e.
Або вручну:
#service crond start
або навіть так:
#crond

Anacron.
Anacron. можна сказати, є спрощеною версією cron’а. Цей демон більше підходить для тих, хто не тримає свій комп’ютер постійно включеним.
При запуску anacron читає файл /etc/anacrontab.

# /etc/anacrontab: configuration file for anacron

SHELL=/bin/sh
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#Список робіт
1 2 cron.daily run-parts /etc/cron.daily
7 2 cron.weekly run-parts /etc/cron.weekly
30 50 cron.monthly run-parts /etc/cron.monthly

Як і в кронтабах в анакронтабе можна використовувати змінні оточення і коментарі.
У рядку з розкладом і командою чотири поля:
1-е поле. Мінімальна кількість днів, через яке буде виконана команда.
2-е поле. Число хвилин від запуску anacron’a до запуску команди.
3-е поле. Ідентифікатор роботи.
4-е поле. Ватага.
Після виконання роботи anacron записує дату файл у каталозі /var/spool/anacron. Ім’я файлу відповідає ідентифікатору роботи. При подальших запусках anacron перевіряє дати в цих файлах. Робота виконується, якщо з моменту останнього запуску пройшло як мінімум то кількість днів, яке зазначено в /etc/anacrontab. Весь вивід програми відправляється поштою користувачеві жбурнув anacron.
Як і cron, anacron зазвичай запускається автоматично, але можна і руками:
#service anacron start
Можна запускати безпосередньо, використовуючи різні параметри:
#anacron -s Послідовне виконання робіт (поки не завершилася перша, друга не почнеться)
#anacron -f Запускати роботи, навіть якщо час виконання ще не настав.
#anacron -n Ігнорується затримка (використовується разом з -s)
#anacron -u Не виконувати команди, але оновити час виконання у файлі /var/spool/anacron
#anacron acrontabfile — використовує anacrontabfile як анакронтаба.

Тепер залишилося тільки навантажити ваших демонів. Як це робити ви тепер знаєте, а чому, я думаю, знайдете. Наступного разу мова піде про демона atd і про деяких командах які також допоможуть вам з автоматизацією.