Crontab в Linux: ПРИМЕРИ за планиране на задачи

⚡ Умно обобщение

Crontab в Linux планира командите да се изпълняват автоматично във фиксирани часове, дати или интервали, използвайки cron daemon, което позволява на администраторите да автоматизират архивирането, почистването на лог файлове, известията и рутинната поддръжка на системата без никаква ръчна намеса.

  • ⏰ Крон демон: Фоновият процес cron чете crontab файловете и изпълнява всяка планирана задача в точната минута, която зададете.
  • 🗂️ Формат на Crontab: Пет полета за време – минута, час, ден от месеца, месец и ден от седмицата – предхождат командата за изпълнение.
  • ✍️ Редактиране на задачи: Използвайте crontab -e за добавяне или промяна на задачи, crontab -l за изброяването им и crontab -r за премахването им.
  • 🔁 Специални струни: Преки пътища като @reboot, @daily, @weekly и @hourly заместват петте полета за време за често срещани графици.
  • 📅 Практически примери: Готовите записи обхващат всеки пет минути, конкретни дни от седмицата, месечни изпълнения и задачи за стартиране.
  • 🤖 AI помощ: AI асистентите и GitHub Copilot могат да генерират и обяснят cron изрази за секунди.

Crontab в Linux планиране на задачи с примери

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 с полето, което контролира, от минутата до деня от седмицата, последвано от командата за изпълнение.

Диаграма на Linux 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

Въпроси и Отговори

Потребителските crontab файлове се съхраняват в /var/spool/cron/ (или /var/spool/cron/crontabs/ в Debian и Ubuntu), докато системният график се намира в /etc/crontab и директорията /etc/cron.d. Винаги редактирайте потребителските crontab файлове с crontab -e, вместо да отваряте тези файлове директно.

Cron изпълнява задачи само в точното им планирано време и ги пропуска, ако машината е изключена. Anacron tracks отчита пропуснати задачи и ги изпълнява, след като системата се включи отново, така че е подходящ за лаптопи и настолни компютри, които не работят постоянно.

Cron използва минимална среда, така че ограниченият PATH е обичайната причина. Използвайте абсолютни пътища за команди и скриптове, направете скрипта изпълним и пренасочете изхода към лог файл, за да можете да записвате всички грешки за отстраняване на грешки.

Добавете >> /path/to/logfile 2>&1 към командата, за да запишете стандартния изход и грешките във файл. Като алтернатива, задайте променливата MAILTO в горната част на crontab файла, така че cron да изпраща изхода на всяка задача по имейл на този адрес.

Файловете /etc/cron.allow и /etc/cron.deny контролират достъпа. Ако съществува cron.allow, само потребителите, изброени в него, могат да използват crontab. Ако съществува само cron.deny, всеки потребител, освен изброените, има право да планира задачи.

Потребителски crontab, създаден с crontab -e, има пет полета за време, последвани от командата. Системният файл /etc/crontab добавя поле, именуващо потребителя, който изпълнява задачата, като се четат минута, час, ден, месец, ден от седмицата, потребител и след това команда.

Да. Инструментите за машинно обучение могат да изчислят нормалното време за изпълнение на задачите и времето за завършване, след което да маркират аномалии, като например задача, която се изпълнява твърде дълго, претърпява тиха неуспех или пропуска графика си. Анализът на лог файловете с изкуствен интелект също така групира свързани грешки, за да ускори работата по отстраняване на първопричината.

Да. Копилот на GitHub може да генерира cron изрази от коментар на обикновен английски, да обясни какво прави график като */5 * * * * и да състави чернова на shell скрипта, който се изпълнява от дадена задача. Винаги тествайте израза, преди да го добавите към производствен crontab.

Обобщете тази публикация с: