В този урок ще ви предоставим основното въведение на всичко, което трябва да разберете, за да планирате работа с 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 задачи се намират в /etc/crontab файл и /etc/cron.d директория и те се изпълняват /etc/cron.hourly , /etc/cron.daily , /etc/cron. седмично и /etc/cron.monthly. Само системният администратор има достъп до тези файлове.
Системният администратор може да дефинира задача за cron, като използва следната команда:
$нано /и т.н./crontabЕто синтаксиса на заданието в /etc/crontab файл:
# min hr dayofmonth месец dayofweek команда за потребителско име* * * * *потребител1ifconfig
Специфични за потребителя cron задачи
Специфичните за потребителя cron задачи се намират в / var / spool / cron / crontabs директория. Въпреки че можете да редактирате тези задания ръчно, препоръчително е да ги редактирате с помощта на командата crontab -e.
Стандартен потребител може да дефинира задача за cron, като използва следната команда:
$crontab-ИНапример, ако сте влезли като пробен потребител, изпълнението на командата crontab -e ще редактира файла crontab за тестовия потребител. По същия начин, ако сте влезли като root потребител, командата crontab -e ще редактира файла crontab за потребителя root.
Издайте командата по -долу в терминала, за да редактирате файла crontab за всеки друг потребител:
$sudocrontab-u <потребителско име> -ИНапример, ако сте влезли като потребител test1 и искате да редактирате файла crontab за потребителя test2, командата ще бъде:
$sudocrontab-uтест2-ИЕто синтаксиса на заданието cron, което може да бъде добавено във файла crontab:
# m h ден от месец месец команда на седмица* * * * * ifconfig
Можете да видите в специфични за потребителя работни места, че няма подадено потребителско име.
Команди на Crontab
Командата crontab се използва за редактиране, изброяване и премахване на заданията на cron:
- crontab -е За да редактирате 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:
* /петнадесет * * * *команда/скриптИзпълнявайте cron работа в 5 сутринта всеки ден
За да планирате работа на cron да се изпълнява всеки ден в 5 сутринта, добавете долния ред във файла crontab:
0 5 * * *команда/скриптИзпълнявайте cron работа всеки ден в 17 часа
За да планирате работа на cron да се изпълнява всеки ден в 17 часа, добавете долния ред във файла crontab:
0 17 * * *команда/скриптИзпълнете cron работа в 9 часа сутринта на първия ден от всеки месец
За да планирате работа на cron да се изпълнява в 9 часа сутринта на първия ден от всеки месец, добавете долния ред във файла crontab:
0 9 1 * *команда/скриптИзпълнявайте cron работа на всеки час на всеки 15 март
За да планирате задание за cron на всеки час на всеки 15 март, добавете долния ред във файла crontab:
0 * петнадесет 3 *команда/скриптИзпълнявайте cron работа на всеки 5 часа
За да планирате задание за cron на всеки 5 часа, добавете долния ред във файла crontab:
0 * /5 * * *команда/скриптИзпълнявайте cron работа на всеки 15 минути
За да планирате изпълнение на cron на всеки 15 минути, добавете долния ред във файла crontab:
* /петнадесет * * * *Използване на низове
Следните низове също могат да се използват за определяне на работа:
- @почасово: За да изпълнявате работа веднъж на всеки час, т.е. 0 * * * *
- @полунощ: За да изпълнявате работа веднъж всеки ден, т.е. 0 0 * * *
- @ежедневно: същото като полунощ
- @седмично: За да изпълнявате работа веднъж седмично, т.е. 0 0 * * 0
- @месечно: За да изпълнявате работа веднъж месечно, т.е. 0 0 1 * *
- @годишно: За да изпълнявате работа веднъж годишно, т.е. 0 0 1 1 *
- @годишно: същото като @ежегодно
- @рестартиране: Да изпълнява задание веднъж при всяко стартиране
Например, за да стартирате скрипт или команда всяка седмица, записът във файла crontab ще бъде:
@седмична команда/скриптПредварително дефинирани Cron директории
Има някои предварително дефинирани cron директории в Linux, където съхранените скриптове се изпълняват автоматично. Ако поставим някакъв скрипт под тези директории, той ще се изпълни автоматично в зададеното време.
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron. седмично
Например, за да изпълнявате скрипт веднъж месечно, ще трябва да го поставите в /etc/cron.monthly.
Вижте Cron Jobs
Преглед на задания за текущия потребител
Използвайте следната команда, за да видите всички планирани задания на cron за текущия потребител:
$crontab-наПреглед на задания за root потребители
За да видите всички планирани задачи на root потребителя, издайте следната команда в терминала:
$котка /и т.н./crontabЩе трябва да влезете като root потребител или да изпълните командата като sudo.
Преглед на задачите за другите потребители
За да видите всички планирани задачи на конкретен потребител, издайте следната команда в терминала, като замените с действителното потребителско име:
$sudocrontab-u <потребителско име> -наЗа да изпълните тази команда, ще ви трябват sudo права.
Преглеждайте почасови задачи за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват почасово, изпълнете следната команда в терминала:
$ls -на /и т.н./cron.часовоПреглеждайте ежедневните задачи за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват ежедневно, изпълнете следната команда в терминала:
$ls -на /и т.н./cron.daily/Преглеждайте седмичните задачи за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват седмично, изпълнете следната команда в терминала:
$ls -на /и т.н./cron.седмично/Преглеждайте месечните задачи за cron
За да видите всички задания на cron, които са конфигурирани да се изпълняват месечно, изпълнете следната команда в терминала:
$ls -на /и т.н./cron.месечно/Архивирайте всички Cron работни места
Препоръчително е да запазите резервно копие на всички задания на cron във файл, за да можете да се възстановите в случай на изтриване. За да направите резервно копие на всички текущи задания, използвайте оператора за пренасочване, за да пренасочите изхода на crontab -l към файл.
$crontab-на >backup_cron.txtПремахване на всички планирани Cron задачи
За да премахнете всички планирани задания за cron, използвайте флага -r, както следва:
$crontab-rРазрешение на Cron
Можем да ограничим достъпа до командата crontab чрез два файла: / etc/cron.allow и/etc/cron.deny.
- /etc/cron.allow - Добавете потребители (по един на ред), на които искате да разрешите достъп до командите crontab. Тези потребители могат да изпълняват задания по график.
- /etc/cron.deny - Добавете потребители (по един на ред), на които искате да откажете достъп до командите crontab. Тези потребители не могат да изпълняват задания по график.
Генератори на синтаксис на Crontab
Има някои уебсайтове, които позволяват генериране на синтаксис за crontabs. Тези уебсайтове улесняват генерирането на израз на crontab, без да се налага да помните синтаксиса. Въпреки че има различни уебсайтове за генериране на синтаксис като crontabgenerator.com , crontab-generator.org , и cronmaker.com . Този, който най -вече предпочитам и намирам за полезен, е crontab.guru . Въз основа на въвеждане от потребителя, той генерира израз crontab, който можете да копирате-поставите във файла crontab.
Заключение
В този урок ние обяснихме основите на заданията на cron, неговия синтаксис и как да го настроим. Ние също така обсъдихме как да преглеждате заданията на cron, да създавате резервно копие и да ги премахвате, ако вече не е необходимо.