Разбиране и използване на Cron: Изчерпателно ръководство за планиране на задачи
Cron, кратко за команда стартирайте онлайн, е мощен базиран на времето планировчик на задачи в Unix-подобни операционни системи. Терминът Cron е игра на думата Kronos or Chronos, което в гръцката митология представлява времето. Името cron за базирания на времето планировчик на задачи отразява неговата функция за планиране и изпълнение на задачи в определени часове или интервали, което го прави подходяща препратка към концепцията за време в митологията.
Cron ви позволява да автоматизирате повтарящи се задачи, да изпълнявате скриптове на определени интервали и да поддържате ефективността на системата. Това изчерпателно ръководство ще ви преведе през всичко, което трябва да знаете за cron, от инсталиране до използване, ключов речник и примери за истински код.
Съдържание
- Какво е cron?
- Инсталиране на Cron
- Основни понятия и терминология
- Cron Синтаксис
- Примери и случаи на употреба
- Често срещани клопки и най-добри практики
- Допълнителни cron ресурси
Какво е Cron?
Cron е демон (фонов процес), който работи на Unix-базирани системи, включително Linux и macOS. Основната му цел е автоматично да изпълнява планирани задачи. Тези задачи могат да варират от прости скриптове до системна поддръжка и архивиране.
Инсталиране на Cron
В повечето Unix-подобни системи cron е предварително инсталиран. Можете да проверите наличността му, като отворите терминал и напишете:
crontab -e
Ако тази команда отвори редактора на cron таблица, имате инсталиран cron. Ако не, можете да го инсталирате с помощта на системния мениджър на пакети. Например в Ubuntu можете да използвате:
sudo apt-get install cron
Концепции и терминология на Cron
Преди да се потопим в използването на cron, нека разберем някои основни понятия и терминология:
- кронтаб: Съкратено от cron таблица, това е файл, който съдържа списък с планирани задачи за потребител.
- Кронджоб: Единична задача или команда, планирана да се изпълни в определено време.
- Полетата: Всеки cronjob има пет полета, които определят кога да се изпълнява заданието:
- Минута (0-59)
- час (0-23)
- Ден от месеца (1-31)
- Месец (1-12)
- Ден от седмицата (0-7, където и 0, и 7 представляват неделя)
Cron Синтаксис
Разбирането на синтаксиса на запис в crontab е от решаващо значение. Следва модела:
* * * * * command-to-be-executed
Ето коментирано обяснение, което можете да вмъкнете във вашето cron задание:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Всяка звездичка (*) представлява поле в cron израза. Например, за да планирате работа всеки ден в 3:30, ще използвате:
30 15 * * * command-to-be-executed
Cron примери и случаи на използване
Нека разгледаме някои практически примери, за да илюстрираме използването на cron:
- Ежедневно изпълнение на скрипт: За да изпълнявате скрипт всеки ден в полунощ, можете да използвате:
0 0 * * * /path/to/script.sh
- Изпълнение на скрипт на всеки час: За почасова задача използвайте:
0 * * * * /path/to/script.sh
- Седмично архивиране: За да планирате седмично архивиране в неделя в 2 сутринта, използвайте:
0 2 * * 0 /path/to/backup-script.sh
- Изпълнение на задача в конкретни месеци: За да стартирате работа само през януари и юли в 8:30 сутринта:
30 8 * 1,7 * /path/to/script.sh
Cron капани и най-добри практики
- Променливи на околната среда: Уверете се, че вашите задания на cron са настроили необходимите променливи на средата, тъй като заданията на cron не наследяват променливите на средата на вашата обвивка.
- Разрешения: Уверете се, че сте задали разрешенията за вашия скрипт файл като изпълним. Всеки път, когато запазвах отново скрипта си, откривах, че разрешенията ми трябва да бъдат зададени отново!
- Променливи на пътя: Посочете пълния път към изпълнимите файлове и скриптове във вашите cron задачи, за да избегнете проблеми с относителните пътища.
- Тестване: Тествайте ги в безопасна среда, преди да настроите критични cron задачи, за да сте сигурни, че работят според очакванията.
- Влизане: Пренасочете изхода на вашите cron задачи към лог файл, за да проследите тяхното изпълнение и всички потенциални грешки.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Това cron задание изпълнява скрипт /path/to/script.sh
всеки ден в полунощ и изходът (както stdout, така и stderr), генериран от скрипта, се добавя към лог файла
/path/to/cron.log
. Това е често срещана практика за улавяне и регистриране на изхода от cron задания за целите на наблюдението и отстраняването на проблеми. Нека разбием този специфичен синтаксис на cron задача:
- *0 0 * * *: Тази част дефинира графика за това кога трябва да се изпълнява задачата cron. В този случай е планирано да се изпълнява всеки ден в полунощ (0 минути след 0 часа).
- /path/to/script.sh: Това е командата или скриптът, който да се изпълни, когато се изпълнява задачата cron. Този пример показва скрипт, разположен на
/path/to/script.sh
. - >> /path/to/cron.log: Тази част пренасочва стандартния изход (stdout) на задачата cron към лог файл с име
cron.log
намира се в/path/to/
, Най->>
добавя изхода към лог файла, така че ако файлът не съществува, той ще бъде създаден, а ако вече съществува, изходът ще бъде добавен в края на файла. - 2> & 1: Това се използва за пренасочване както на стандартния изход (stdout), така и на стандартната грешка (stderr) към един и същ лог файл. The
2
представлява stderr и1
представлява stdout. Така,2>&1
означава, че както stdout, така и stderr се пренасочват към същия лог файл, указан по-рано.
Cron е ценен инструмент за автоматизиране на задачи на Unix-базирани системи. Със своите гъвкави опции за планиране, той може да опрости системното администриране и да подобри ефективността. Като разберете неговия синтаксис и следвате най-добрите практики, можете да впрегнете силата на cron, за да автоматизирате ефективно вашите рутинни задачи.
Допълнителни Cron ресурси
- Демонът на Unix - Дийн Уилсън