Планиране на периодични задачи с помощта на Cron в Linux
cron
е програма за Linux, която се използва за планиране на команда или скрипт, които да бъдат изпълнени в по-късен момент. Може да се използва и за планиране на периодично изпълнявани команди и скриптове. Програмите, планирани с помощта на cron, обикновено се наричат Cron Jobs. Основната му употреба е за задачи по системна администрация, като редовно архивиране, редовни актуализации на софтуера и други подобни задачи за поддръжка.
Въведение
cron
работи като демон в Linux, т.е. като фонов процес. Той позволява на потребителите да планират задачи директно с командата crontab, която отваря конфигурационен файл, наречен Cron File в редактор. За всеки потребител се създават отделни Cron файлове.
Създаване на Cron файл и основен синтаксис
В crontab
командата може да се изпълни с -е
флаг за редактиране на съществуващ Cron файл. Ако файлът все още не съществува, той ще бъде създаден. Ако потребителят извиква командата за първи път и ако има множество файлови редактори, инсталирани в системата Linux, командата ще поиска от потребителя да избере редактор по подразбиране от списък с редактори.
След като изберете редактора, ще бъде създаден и отворен cron файл за потребителя. Вече можете да посочите задания във файла.
Общият синтаксис за определяне на Cron Job е:
По принцип, на ще работи в посочената 'минута' (0-59), 'час' (0-23), 'ден от месеца' (1-31), месец (1-12), ден от седмицата, (0-7, За неделя може да се използва 0 или 7) в Cron Job. За да опростим, нека вземем пример:
1 2 3 4 5 echo "Здравей"
Това означава командата ехо "Здравей"
ще работи на всеки пети ден от седмицата (петък) и всеки 3-ти ден от месеца, на всеки 4-ти месец от годината (април), в час 02:01 (2-ри час първа минута).
Ако същата команда трябва да се изпълнява всеки ден в 02:01, синтаксисът ще изглежда така:
1 2 * * * ехо "Здравей"
В *
означава „винаги“ или „за всички“, напр. за всички месеци, за всички дни от седмицата и т.н.
Командният оператор (,
) може да се използва за въвеждане на списък със стойности, когато задачата трябва да се повтори. Например:
0 2,3,4 * * * echo "Здравей"
Това ще изпълнява програмата в 2 сутринта, 3 сутринта и 4 сутринта всеки ден.
По същия начин, тире (-
) оператор може да се използва за определяне на диапазон, за който задачата трябва да се повтори. Например:
0-20 2 * * * ехо "Здравей"
Това ще стартира програмата в 02:00, 02:01, 02:02 и така нататък до 02:20.
Най-накрая имаме наклонената черта ( /
) оператор. Този оператор се използва за определяне на интервална стойност, според която задачата ще се повтаря. напр. */15
в полето минути означава, че задачата трябва да се повтаря на всеки 15 минути. 2-10/2
в полето за часове указва, че задачата трябва да се повтаря между 2 сутринта и 10 сутринта след всеки 2-часов интервал (2 сутринта, 4 сутринта, 6 сутринта, 8 сутринта, 10 сутринта).
*/15 2-10/2 * * * ехо "Здравей"
След като сте направили записа във файла Cron, запазете файла и излезте от редактора.
Трябва да видите a „инсталиране на нов crontab“ съобщение в терминала след запазване и излизане от файла crontab.
Макроси
Определени макроси са предварително дефинирани в Cron, които определят някои често необходими интервали от време, като всеки час, всеки ден, всеки месец и т.н.
За да изпълнявате задача веднъж всеки ден в началото на деня, т.е. в 00:00, използвайте макрос @ежедневно
. Това е еквивалентно на 0 0 * * *
.
Можете да поставите това във файла Cron по същия начин, както е описано по-горе.
По подобен начин могат да се използват и другите макроси, т.е. @на час
(Минута 0 на всеки час), @месечно
(00:00 на първия ден от месеца), @седмично
(00:00 на първия ден от седмицата, @годишно
(00:00 на първи януари всяка година), @рестартиране
(при всяко стартиране на компютъра).
Заключение
В тази статия научихме как да добавим Cron Jobs за редовно изпълнение в Linux. Правилното използване на Cron Jobs е полезно дори за най-досадните ръчни задачи, пред които е изправен потребителят, напр. редовно изтриване на стари логове, архивиране на всякакви студени данни (данни, които рядко са достъпни) и т.н.