Cron — програма за автоматизирано планиране на задачи в UNIX и Linux

Открийте как да автоматизирате задачи в UNIX/Linux с cron — настройка на crontab, примери, синтаксис и най‑добри практики за надеждна периодична автоматизация.

Автор: Leandro Alegsa

Cron е компютърна програма, която може да се използва, за да накара компютъра да изпълнява задачи през определени интервали от време. Тя се използва в компютърните операционни системи UNIX и операционни системи, които са подобни на UNIX, като Linux.

Cron може да се използва за планиране на повечето повтарящи се задачи. Често се използва за автоматизиране на задачи, свързани с поддръжката или администрирането на компютър или компютърна мрежа, въпреки че може да се използва и за много други задачи, като например изтегляне на файлове от интернет и изтегляне на електронна поща в определени часове или дати.

Името на компютърната програма cron произлиза от думата cron, която е от гръцката дума за време - χρόνος (chronos).

Cron се настройва чрез редактиране на файл, наречен crontab (таблица на cron). В този файл се изброяват конкретните задачи, които компютърът трябва да изпълнява, и кога трябва да се изпълняват.

Как работи Cron

Cron работи като демон (background service), който периодично проверява за редове в crontab файловете и изпълнява зададените команди в точно определените моменти. За да изпълнява задачи, услугата cron трябва да е стартирана (на много системи услугата се казва просто cron или crond).

Формат на crontab

Всеки ред в crontab описва кога и какво да се изпълни. Общият формат е:

минутa  час  ден(от месецa)  месец  ден(от седмицата)  команда

Полетата приемат следните стойности:

  • минута: 0–59
  • час: 0–23
  • ден (от месеца): 1–31
  • месец: 1–12 (или съкращения като Jan, Feb и т.н.)
  • ден от седмицата: 0–7 (0 и 7 са неделя) или Mon–Sun

Могат да се използват специални символи:

  • * — всяка стойност (всяка минута/час/ден и т.н.)
  • , — разделяне на стойности (напр. 1,15,30)
  • - — диапазон (напр. 1-5)
  • / — стъпка (напр. */15 означава на всеки 15 минути)

Примери

  • Всеки ден в полунощ:
    0 0 * * * /path/to/script.sh
  • На всеки 15 минути:
    */15 * * * * /usr/bin/some-command
  • Всеки понеделник в 3:30 сутринта:
    30 3 * * 1 /path/to/weekly-task
  • При рестарт на системата (специален низ):
    @reboot /path/to/startup-script

Специални низове

За удобство има и предварително дефинирани низове, които заместват четири или пет полета:

  • @reboot — при стартиране на системата
  • @hourly, @daily, @weekly, @monthly, @yearly (или @annually) — съответните периоди

Потребителски и системни crontab файлове

Има два основни вида crontab конфигурации:

  • Потребителски crontab — редактира се чрез командата crontab -e (за текущия потребител). Списъкът със задачи се съхранява в директории, контролирани от системата (напр. /var/spool/cron/), но не се редактира директно от потребителя.
  • Системен crontab — файлът /etc/crontab и файловете в /etc/cron.d/. Те позволяват да се задава и потребител, от името на който да се изпълнява командата, и обикновено се използват от администратора за системни задачи.

Също така много системи имат директории /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/ — скриптовете в тях се изпълняват съответно на всеки час, ден, седмица или месец.

Среда на изпълнение и добри практики

Командите, изпълнявани от cron, работят в ограничена среда. Някои важни съвети:

  • Използвайте пълни пътища до изпълними файлове и скриптове (напр. /usr/bin/python3), тъй като PATH в cron може да е различен от този в интерактивната ви сесия.
  • Дефинирайте нужните променливи в crontab (например MAILTO, PATH, SHELL), ако задачата изисква специфична среда.
  • Пренасочвайте изхода (stdout и stderr) към лог файлове или /dev/null, за да избегнете неочаквани имейли:
    0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1
  • Проверявайте разрешенията на скриптовете и на файловете, които те ползват.

Управление и диагностика

  • Редактиране на crontab: crontab -e
  • Извеждане на crontab: crontab -l
  • Премахване на crontab: crontab -r
  • Логове: често cron записва дейност в системния лог (/var/log/syslog, /var/log/cron или подобен файл в зависимост от дистрибуцията).

Anacron и системи, които не работят непрекъснато

На лаптопи и други машини, които не са постоянно включени, anacron е полезен инструмент — той гарантира изпълнение на периодични задачи, дори ако компютърът е бил изключен в момента на планираното време. Anacron обикновено се интегрира със системните crontab механизми.

Сигурност и ограничения

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

С комбинация от правилна конфигурация, логване и добри практики, cron е мощен и надежден инструмент за автоматизация на широк набор от задачи в UNIX-подобни системи.

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

Въпрос: Какво е Крон?


О: Cron е компютърна програма, която се използва за планиране на задачи през определени интервали от време.

В: Къде се използва Cron?


О: Cron се използва в компютърните операционни системи UNIX и операционни системи, които са подобни на UNIX, като Linux.

В: Какви задачи могат да се планират с Cron?


О.: Повечето повтарящи се задачи могат да се планират с Cron. Той често се използва за автоматизиране на задачи, свързани с поддръжката или администрирането на компютър или компютърна мрежа, въпреки че може да се използва за много други задачи, като например изтегляне на файлове от интернет и изтегляне на електронна поща в определени часове или дати.

Въпрос: Откъде идва името Cron?


О: Името на компютърната програма Cron произлиза от думата cron, която е от гръцката дума за време - χρόνος (chronos).

В: Как се настройва Cron?


О: Cron се настройва чрез редактиране на файл, наречен crontab (таблица на cron). В този файл се изброяват конкретните задачи, които компютърът трябва да изпълнява, и кога трябва да се изпълняват задачите.

В: Какво представлява crontab?


О: Crontab е файл, в който се изброяват конкретните задачи, които компютърът трябва да изпълнява, и кога трябва да се изпълняват.

В: За какви повтарящи се задачи може да се използва Cron?


О: Повечето повтарящи се задачи, свързани с поддръжката или администрирането на компютър или компютърна мрежа, могат да бъдат автоматизирани с Cron. Той може да се използва и за много други задачи, като например изтегляне на файлове от интернет и изтегляне на електронна поща в определени часове или дати.


обискирам
AlegsaOnline.com - 2020 / 2025 - License CC3