Crontab в Linux: ПРИМЕРИ за планиране на задачи
⚡ Умно обобщение
Crontab в Linux планира командите да се изпълняват автоматично във фиксирани часове, дати или интервали, използвайки cron daemon, което позволява на администраторите да автоматизират архивирането, почистването на лог файлове, известията и рутинната поддръжка на системата без никаква ръчна намеса.
Crontab, съкращение от cron table, е конфигурационният файл и командата, които управляват Linux планиране на задачи. Разделите по-долу обясняват формата crontab, командите за добавяне, изброяване и премахване на задачи, специалните низове @ и готови за употреба примери за планиране.
Какво е crontab?
Cron е кръстен на гръцката дума „Chronos“, което означава време. Това е системен процес (демон), който автоматично изпълнява задачи по зададен график. Cron е набор от команди, използвани за изпълнение на редовни планирани задачи. Crontab означава „cron table“ и ви позволява да използвате планировчика на задачи cron, за да изпълнявате тези задачи.
Crontab е и името на програмата, използвана за редактиране на този график. Той се управлява от crontab файл - конфигурационен файл, който изброява командите на shell, които да се изпълняват периодично по зададения график.
Защо да използваме Cron задачи?
Ето основните причини за използване на cron задачи в Linux:
- Прави планирани резервни копия на лог файлове или бази данни.
- Изтрива автоматично старите лог файлове.
- Archiизчиства и премахва таблици от базата данни.
- Изпраща имейли с известия, като например бюлетини или напомняния за изтичане на парола.
- Извършва редовно почистване на кеширани данни.
- Автоматизира повтарящи се Unix и Linux задачи.
- Автоматизира рутинната поддръжка на системата.
Как да използвам cron в Linux?
Системният пакет на Linux включва полезен планировчик на задачи, наречен crontab. Crontab е популярен, защото може да се планира изпълнението на задача от името на root потребител, което улеснява автоматизираните промени в системата. Просто променяте задачата веднъж и след това изчаквате, докато тя се задейства отново по график.
Формат на Crontab в Linux
Записът в crontab на Linux има шест полета. Първите пет полета определят часа и датата на изпълнение, а шестото поле съдържа командата за изпълнение.
Синтаксис на Crontab:
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
Диаграмата по-долу съпоставя всяка звездичка в запис в crontab с полето, което контролира, от минутата до деня от седмицата, последвано от командата за изпълнение.
Петте полета за време приемат следните стойности: минута (0–59), час (0–23), ден от месеца (1–31), месец (1–12 или ян–дек) и ден от седмицата (0–7, където 0 и 7 означават неделя). Вие контролирате всяко поле с тези специални символи:
- звездичка (*): Съвпада с всяка възможна стойност за това поле.
- Дефинирайте диапазон: Използвайте тире, за да зададете диапазон, например 1-10, 30-40, ян-март или пон-ср.
- Дефинирайте множество диапазони: Използвайте запетаи, за да комбинирате диапазони, като например апр-юни, окт-дек.
Как да добавите/промените Crontab
Потребителите могат да редактират собствените си crontab задачи със следната команда crontab. Опцията -u е насочена към crontab на конкретен потребител, така че въведете потребителското име, както е показано в следващите примери:
$ crontab -u -e
Командата по-горе отваря личната конфигурация на crontab за вашата система, която можете да редактирате в текстовия редактор по подразбиране.
Няма нужда да рестартирате cron; той автоматично приема промените ви. За да видите текущите си задачи, използвайте:
$ crontab -l
За да премахнете задачите си от crontab, използвайте следната команда:
$ crontab -r
За да добавите или актуализирате задача в crontab, използвайте командата по-долу:
crontab -e
За да редактирате crontab файла на друг потребител, посочете потребителя с опцията -u:
crontab -u username -e
Как да изброите Crontab
За да видите записите в crontab на текущия потребител:
crontab -l
За да видите записите в crontab на конкретен потребител:
crontab -u username -l
Важни примери за Crontab
Ето някои важни, готови за употреба примери за crontab графици:
| Descriptйон | Команда |
|---|---|
| Изпълнява различните задачи за планиране. Командата по-долу се изпълнява ежедневно в 7:00 и 17:00 часа. |
0 7,17 * * * /scripts/script.sh
|
| Изпълнява cron задача на всеки 5 минути. |
*/5* * * * * /scripts/script.sh
|
| Изпълнява задачата всеки Monday в 5 сутринта. Това е полезно за седмични задачи, като например почистване на системата. |
0 5 * * mon /scripts/script.sh
|
| Изпълнява скрипта ви на интервал от 3 минути. |
*/3 * * * * /scripts/monitor.sh
|
| Планира cron задача, която се изпълнява в определени месеци — тук февруари, юни и септември. |
* * * feb,jun,sep * /script/script.sh
|
| Изпълнява се в избрани дни. Този пример се изпълнява всеки Monday и сряда от 5ч. |
0 17 * * mon,wed /script/script.sh
|
| Позволява на cron да се изпълнява в първата събота на всеки месец. |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
| Изпълнява скрипт на интервал от 6 часа, конфигуриран както е посочено по-долу. |
0 */6 * * * /scripts/script.sh
|
| Планира задача за изпълнение два пъти на Monday и вторник. Използвайте следните настройки, за да го направите. |
0 4,17 * * mon,tue /scripts/script.sh
|
| Планира изпълнението на cron задача на всеки 15 секунди. |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
| Планира задачи на годишна база. @yearly е подобно на „0 0 1 1 *“. Изпълнява задачата веднъж годишно в полунощ на 1 януари — удобно за новогодишни поздрави. |
@yearly /scripts/script.sh
|
| Изпълнява задачи на месечна база. @monthly е подобно на „0 0 1 * *“. Изпълнява задачата в полунощ на първия ден от всеки месец. |
@monthly /scripts/script.sh
|
| Изпълнява множество задачи, използвайки един cron запис. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
| Планира задачи на седмична база. @weekly е подобно на „0 0 * * 0“. Изпълнява седмични задачи, като например почистване на системата в полунощ всяка неделя. |
@weekly /bin/script.sh
|
| Планира задачи ежедневно. @daily е подобно на „0 0 * * *“. Изпълнява задачата веднъж дневно в полунощ. |
@daily /scripts/script.sh
|
| Изпълнява задачи на всеки час. @hourly е подобно на „0 * * * *“. Изпълнява задачата в началото на всеки час. |
@hourly /scripts/script.sh
|
| Изпълнява задачи при рестартиране на системата. @reboot е полезен за задачи, които системата трябва да изпълнява при стартиране, позволявайки на фоновите задачи да започват автоматично. |
@reboot /scripts/script.sh
|


