В този урок ще ви предоставим основното въвеждане на всичко, което трябва да разберете за планиране на работа с cron. Това включва основен синтаксис на cron, редактиране на crontab файл, планиране на работа с cron с няколко примера, преглед на cron работа и т.н.
Основи на Cron Job
Нека разберем някои основи на cron работа.
Какво е Crond?
Crond е демонът в системата Linux, който работи във фонов режим и проверява всяка минута, за да провери дали има планирана работа по това време. Ако има, той изпълнява тази работа, в противен случай остава неактивен.
Синтаксис на Cron Job
Синтаксисът за cron job е както следва:
* * * * * команда / скриптОтляво:
- Първият * съответства на минути (0-59)
- Вторият * съответства на Часове (0-23)
- Третият * съответства на Ден от месеца (1-31)
- Четвъртият * съответства на месеца в годината (1-12)
- Петият * съответства на деня от седмицата (0-6, от неделя до събота)
За да зададете множество стойности в поле, използвайте следните символи на оператора:
- Звездичка (*): За да посочите всички възможни стойности за поле
- Тире (-): Да се сопределя диапазон от стойности
- Запетаята (,): За да зададете списък със стойности
- Разделител (/): За да зададете стойност на стъпка
Редактиране на файл Crontab
Crontab е файл, който съдържа планираните задачи в определен синтаксис. Има два типа crontab файлове; едната за специфични за системата cron задачи, а другата за специфични за потребителя cron задачи.
Системни cron задачи
Общосистемните задания за cron се намират в / и т.н. / crontab файл и / etc / cron.д директория и те се изпълняват / etc / cron.на час, / etc / cron.ежедневно, / etc / cron.седмично и / etc / cron.месечно. Само системен администратор има достъп до тези файлове.
Системният администратор може да дефинира задание cron, като използва следната команда:
$ nano / etc / crontabЕто синтаксиса на заданието в / etc / crontab файл:
# min hr dayofmonth месец dayofweek команда за потребителско име* * * * * потребител1 ifconfig
Специфични за потребителя задания cron
Специфичните за потребителя задания cron се намират в /var / spool / cron / crontabs директория. Въпреки че можете да редактирате тези задачи ръчно, препоръчително е да ги редактирате с помощта на командата crontab -e.
Стандартният потребител може да дефинира задание cron, като използва следната команда:
$ crontab -eНапример, ако сте влезли като „тест“ потребител, стартирането на командата crontab -e ще редактира файла crontab за потребителя „тест“. По същия начин, ако сте влезли като root потребител, командата crontab -e ще редактира файла crontab за root потребителя.
Издайте командата по-долу в терминала, за да редактирате файла crontab за всеки друг потребител:
$ sudo crontab -uНапример, ако сте влезли като потребител „test1“ и искате да редактирате файла crontab за потребителя „test2“, командата ще бъде:
$ sudo crontab -u test2 -eЕто синтаксиса на заданието cron, който може да бъде добавен във файла crontab:
# m h dayofmonth месец dayofweek команда* * * * * ifconfig
Можете да видите в специфичните за потребителя задачи, че няма подадено „потребителско име“.
Команди на Crontab
Командата crontab се използва за редактиране, изброяване и премахване на задачите cron:
- crontab -e За да редактирате crontab файла на текущия потребител
- crontab -l За показване на съдържанието на файла crontab
- crontab -u [потребителско име] За да редактирате crontab файл на всеки друг потребител
- crontab -r За да премахнете файла crontab на текущия потребител
- crontab -i За показване на подкана преди премахване на crontab файла на текущия потребител
Планиране на работа с Cron
С Cron можете да изпълните задача в точно определен час, дата и интервали с минимална единица за минути, т.е.д., можете да изпълнявате работа всяка минута.
За да планирате работа с cron, отворете файла crontab, като използвате метода, обсъден в предишния раздел. След като отворите файла crontab, ще бъдете подканени да изберете текстов редактор. Въведете номер, за да изберете предпочитания от вас текстов редактор. Превъртете надолу до дъното на файла и добавете задачи в синтаксиса, описан по-горе. Всеки ред във файл определя една команда. Първите пет записа в реда указват планираното време, а последният запис посочва коя команда или скрипт трябва да се изпълни.
Пример:
Следващият ред във файла crontab ще насрочи заданието cron да стартира командата / скрипта на всяка 30-та минута през последните 5 часа всеки ден от седмицата от понеделник до събота.
* / 30 5 * * 1-6 команда / скрипт
Минути
В това поле посочваме минутите, когато искаме командата да бъде изпълнена. Посочено е от 0 до 59. * В това поле означава да изпълнявате задачата всяка минута. В горния ред на crontab, * / 30 казва на заданието cron да изпълнява посочената команда / скрипт на всеки 30 минути.
Часа
В това поле посочваме часовете, в които искаме командата да бъде изпълнена. Посочено е от 0 до 23. * В това поле означава да изпълнявате задачата на всеки час. В горния ред на crontab стойността 5 казва на заданието cron да изпълнява посочената команда / скрипт на всеки пет часа.
Ден от месеца
В това поле посочваме конкретните дни от месеците, когато искаме командата да бъде изпълнена. Посочено е от 1 до 31. * В това поле означава всеки ден. В горния ред на crontab, * казва на заданието cron да изпълнява посочената команда / скрипт всеки ден.
Месец от годината
В това поле посочваме конкретните месеци, когато искаме командата да бъде изпълнена. Посочено е от 1 до 12. * В това поле означава всеки месец. В горния ред на crontab, * казва на заданието cron да изпълнява посочената команда / скрипт всеки месец.
Ден на седмицата
В това поле посочваме конкретните дни от седмицата, когато искаме командата да бъде изпълнена. Посочено е от 0 до 6 от неделя до събота (0 за неделя и 6 за събота). * В това поле означава всеки ден в седмицата. В горния ред на crontab, * казва на заданието cron да изпълнява посочената команда / скрипт всеки ден в седмицата.
Примери за Cron Jobs
Ето няколко примера за cron работни места:
Изпълнете cron задача на всеки 15 минути
За да планирате изпълнението на задача cron на всеки 15 минути, добавете реда по-долу във файла crontab:
* / 15 * * * * команда / скриптИзпълнявайте cron работа в 5 сутринта всеки ден
За да планирате да се изпълнява задача cron в 5 часа сутринта всеки ден, добавете долния ред във файла crontab:
0 5 * * * команда / скриптИзпълнявайте cron работа в 17:00 всеки ден
За да планирате изпълнението на cron работа в 17:00 всеки ден, добавете долния ред във файла crontab:
0 17 * * * команда / скриптИзпълнете cron работа в 9 часа сутринта на първия ден на всеки месец
За да планирате изпълнението на задание cron в 9 часа на първия ден на всеки месец, добавете долния ред във файла crontab:
0 9 1 * * команда / скриптИзпълнявайте cron работа всеки час на всеки 15-ти март
За да планирате задание за cron всеки час на всеки 15 март, добавете долния ред във файла crontab:
0 * 15 3 * команда / скриптИзпълнете cron задача на всеки 5 часа
За да планирате задание за cron на всеки 5 часа, добавете долния ред във файла crontab:
0 * / 5 * * * команда / скриптИзпълнете cron задача на всеки 15 минути
За да планирате изпълнението на задача cron на всеки 15 минути, добавете реда по-долу във файла crontab:
*/15 * * * *Използване на низове
Следните низове също могат да се използват за дефиниране на работа:
- @hourly: За да изпълнявате работа веднъж на всеки час, т.е.д., „0 * * * *„
- @ полунощ: За да изпълнявате работа веднъж на ден, т.е.д., „0 0 * * *„
- @daily: същото като полунощ
- @ седмично: За да изпълнявате работа веднъж седмично, т.е.д., „0 0 * * 0„
- @месечно: За да изпълнявате работа веднъж на месец, т.е.д., „0 0 1 * *„
- @ ежегодно: За да изпълнявате работа веднъж годишно, т.е.д., „0 0 1 1 *„
- @ година: същото като @ ежегодно
- @ рестартиране: За изпълнение на работа веднъж при всяко стартиране
Например, за да стартирате скрипт или команда всяка седмица, записът във файла crontab ще бъде:
@weekly команда / скриптПредварително дефинирани директории на Cron
Има някои предварително дефинирани cron директории в Linux, където съхранените скриптове се изпълняват автоматично. Ако поставим някакъв скрипт под тези директории, той ще се изпълни автоматично в конфигурираното време.
- / etc / cron.ежедневно
- / etc / cron.на час
- / etc / cron.месечно
- / etc / cron.седмично
Например, за да изпълните скрипт веднъж на месец, ще трябва да го поставите в / etc / cron.месечно.
Преглед на Cron Jobs
Преглед на задания за текущия потребител
Използвайте следната команда, за да видите всички планирани задания на cron за текущия потребител:
$ crontab -lПреглед на задания за основните потребители
За да видите всички планирани задачи на основния потребител, издайте следната команда в терминала:
$ cat / etc / crontabЩе трябва да влезете като root потребител или да изпълните командата като sudo.
Преглед на заданията за останалите потребители
За да видите всички насрочени задачи на конкретен потребител, издайте следната команда в Терминал, замествайки
За да изпълните тази команда, ще ви трябват права на sudo.
Преглед на почасови задания cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват на час, издайте следната команда в терминала:
$ ls -la / etc / cron.на часПреглеждайте ежедневните задания за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват ежедневно, издайте следната команда в терминала:
$ ls -la / etc / cron.ежедневно /Преглеждайте седмичните задания за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват ежеседмично, издайте следната команда в терминала:
$ ls -la / etc / cron.седмично /Преглеждайте месечните задания за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват ежемесечно, издайте следната команда в терминала:
$ ls -la / etc / cron.месечно/Архивирайте всички Cron работни места
Препоръчително е да запазите архив на всички cron задачи във файл, така че да можете да се възстановите в случай на изтриване. За да направите резервно копие на всички текущи задачи, използвайте оператора за пренасочване, за да пренасочите изхода на crontab -l към файл.
$ crontab -l> backup_cron.текстПремахване на всички планирани Cron задания
За да премахнете всички планирани задания на cron, използвайте флага -r, както следва:
$ crontab -rCron разрешение
Можем да ограничим достъпа до командата crontab чрез два файла: / и т.н. / cron.позволи и / и т.н. / cron.отричам.
- / etc / cron.позволява - Добавете потребители (по един на ред), на които искате да разрешите достъп до командите crontab. Тези потребители могат да изпълняват задания по график.
- / etc / cron.отричам - Добавете потребители (по един на ред), на които искате да откажете достъп до командите crontab. Тези потребители не могат да изпълняват планирани задачи.
Генератори на синтаксис на Crontab
Има някои уебсайтове, които позволяват генериране на синтаксис за crontabs. Тези уебсайтове улесняват генерирането на crontab израз, без да се налага да запомняте синтаксиса. Въпреки че има различни уебсайтове за генератори на синтаксис като crontabgenerator.com, crontab-генератор.org и cronmaker.com. Този, който най-често предпочитам и намирам за полезен, е crontab.гуру. Въз основа на въведените от потребителя генерира израз crontab, който можете да копирате и поставите във файла crontab.
Заключение
В този урок обяснихме основите на cron работни места, неговия синтаксис и как да го настроите. Също така обсъдихме как да преглеждаме cron задания, да създаваме резервно копие и да ги премахваме, ако вече не са необходими.