Crontab у Linux – з прыкладамі і інструментамі ў рэальным часе

Давайце вывучым crontab, яго каманды і розныя аперацыі, звязаныя з Crontab.

Мы даведаемся, як планаваць задачы з дапамогай утыліты cron, і напрыканцы мы таксама абмяркуем некаторыя онлайн-інструменты, якія дапамагаюць нам фарматаваць і тэставаць каманды cron.

Змест

Паходжанне

Crontab расшыфроўваецца як «табліца кронаў». Слова cron паходзіць ад грэцкага слова Chronos, што азначае час. Crontab – гэта працэс сістэмнага дэмана, які аўтаматычна выконвае некаторыя задачы і заданні ў запланаваны час.

Случаі выкарыстання

Crontab карысны для выканання розных аперацый, такіх як апрацоўка аўтаматызаванага рэзервовага капіравання, ратацыя файлаў часопісаў, сінхранізацыя файлаў паміж аддаленымі машынамі і ачыстка часовых тэчак і г. д. Crontab можна выкарыстоўваць для любой працы, але ён становіцца асабліва карысным, калі мы пачынаем мець справу з тып працы сістэмнага адміністравання.

Праверце гэта:  Як скапіяваць файлы з дапамогай каманды «install» у Linux

Выкарыстоўваючы cron, адміністратар можа запланаваць выкананне задання ў пэўны час і дзень.

Такім чынам, давайце паглядзім, як мы можам гэта наладзіць.

Сінтаксіс Crontab

Каб выканаць спіс каманд, утыліта cron счытвае файлы канфігурацыі. Каб інтэрпрэтаваць радкі ў табліцах канфігурацыі crontab, ён прытрымліваецца сінтаксісу Crontab. Crontab мае шэсць палёў, і першыя пяць (1-5) палёў вызначаюць дату і час выканання. Апошняе поле, г.зн. 6-е поле, можа быць імем карыстальніка і/або задачай /заданнем/камандай/скрыптам, які трэба выканаць.

* * * * * USER_NAME COMMAND/SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Дзень тыдня (0 – 6) (0 – нядзеля, або выкарыстоўвайце назвы)
│ │ │ |____________ Месяц (1 – 12),* азначае кожны месяц
│ │ |______________ Дзень месяца (1 – 31),* азначае кожны дзень
│ |________________ Гадзіна (0 – 23),* азначае кожную гадзіну
|__________________ Хвіліна (0 – 59), * азначае кожную хвіліну

Заўвагі:

  • Зорачка
  • выкарыстоўваецца для супастаўлення ўсіх магчымых значэнняў для поля. Напрыклад, зорачка, якая выкарыстоўваецца ў полі гадзін, будзе эквівалентная кожнай гадзіне, або зорачка ў полі месяца будзе эквівалентнай кожнаму месяцу.

імя карыстальніка не з’яўляецца абавязковым (даступна, толькі калі гэта сістэмны файл crontab)

Прыклады:

Давайце разбярэмся з прыведзеным вышэй сінтаксісам на некаторых прыкладах

0 5 * * * /scripts/job.sh

1. Заплануйце выкананне хрона ў 5 раніцы штодня

0 6,18 * * * /scripts/job.sh

2. Заплануйце выкананне хрона два разы на дзень у 6 раніцы і 6 вечара

* * * * * /scripts/job.sh

3. Заплануйце выкананне хрона кожную хвіліну

0 19 * * mon /scripts/job.sh

4. Заплануйце выкананне хрона кожны панядзелак у 7 вечара.

*/10 * * * * /scripts/job.sh

5. Заплануйце запуск cron кожныя 15 хвілін.

* * * feb,jun,oct * /script/job.sh

6. Заплануйце выкананне хрона ў выбраныя месяцы

25 7 4 3 * /home/script/backup.sh

7. Запусціце скрыпт абалонкі /home/script/backup.sh 4 сакавіка ў 7:25 раніцы

8. Заплануйце запуск cron кожныя 30 секунд

  • Паколькі мы не маем кантролю над секундамі ў Crontab, але мы можам дасягнуць гэтага з дапамогай прыведзенага ніжэй двухэтапнага працэсу.
* * * * * /home/scripts/script.sh
  • Давайце спачатку заплануем задачу, якая выконваецца кожную хвіліну.
* * * * * sleep 30; /home/scripts/script.sh

Зараз давайце выкарыстаем каманду sleep, каб прыпыніць выкананне на 30 секунд.

Вышэйпаказанае заданне спыніць выкананне на 30 секунд і зноў адновіцца.

Тып канфігурацыйных файлаў Cron

Ёсць два тыпу канфігурацыйных файлаў Cron:

Сістэма UNIX/Linux Crontab

Гэта патрабуе прывілеяў root, таму што звычайна яны выкарыстоўваюцца для сістэмных службаў і важных заданняў. Шостае поле (у прыведзеным вышэй апісанні сінтаксісу) – гэта імя карыстальніка, ад імя якога будзе выконвацца каманда. Гэта дае магчымасць сістэмнаму crontab запускаць каманды ад любога карыстальніка.

Карыстальнік Crontab

Карыстальнік таксама можа ўсталёўваць уласныя заданні cron з дапамогай каманды crontab. Тут таксама шостае поле (у прыведзеным вышэй апісанні сінтаксісу) – гэта каманда для запуску, і ўсе каманды запускаюцца ад імя карыстальніка, які стварыў crontab. Кожны карыстальнік можа мець свой уласны файл crontab, і хоць гэта файлы ў /var/spool/cron/crontabs, яны не прызначаны для непасрэднага рэдагавання. Нам трэба выкарыстоўваць каманду crontab для рэдагавання або наладжвання ўласных заданняў cron.

Як гэта працуе? Служба cron (дэман) працуе ў фонавым рэжыме і пастаянна правярае (кожную хвіліну) файл /etc/crontab і каталогі /etc/cron.*/. Ён таксама правярае каталог /var/spool/cron/. Каманды выконваюцца хрон

калі палі хвіліны, гадзіны і месяца адпавядаюць бягучаму часу, і хаця б адно з двухдзённых палёў (дзень месяца або дзень тыдня) супадае з бягучым днём.

Асноўныя каманды

Пералік існуючых заданняў Cron

crontab -l

Мы можам пералічыць усе заданні Cron, не адкрываючы файл канфігурацыі crontab, выкарыстоўваючы каманду ніжэй

[[email protected] ~]# crontab -l
no crontab for techking.by
[[email protected] ~]#

Калі няма існуючага задання, ён верне вывад як

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Калі карыстальнік ужо дадаў некаторыя заданні, яны будуць адлюстроўвацца наступным чынам.

Праверце гэта:  Як выкарыстоўваць трубы ў Linux

Табліца Cron залежыць ад карыстальніка, што азначае, што вы павінны ўвайсці ў сістэму пад пэўным карыстальнікам, каб убачыць спіс табліцы Cron.

Спіс Cron для канкрэтнага карыстальніка

Каб пералічыць запланаваныя заданні іншага карыстальніка, выкарыстоўвайце параметры -u (Карыстальнік) і -l (Спіс).

crontab -u іншае_імя_карыстальніка -l

Прыклад: crontab -u techking.by -l

Дадаць/змяніць запісы Crontab

Каб адрэдагаваць запіс crontab, мы можам выкарыстоўваць параметр -e, як паказана ніжэй.

кронтаб -э

Прыведзеная вышэй каманда адкрые рэдактары vi, у якіх вы ўказваеце дэталі задання і захоўваеце файл. Пасля захавання вы можаце праверыць, настроены cron ці не, з дапамогай crontab -l.

Дадаць/змяніць запісы Crontab для канкрэтнага карыстальніка

crontab -u another_username -e

Мы можам рэдагаваць crontab для іншага карыстальніка з дапамогай каманды ніжэй

Прыклад: crontab -u techking.by -e

Выдаліць запіс Crontab

Выкарыстоўвайце параметр -r з Crontab, каб выдаліць поўныя запланаваныя заданні без пацверджання з crontab

кронтаб -р

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete techking.by's crontab?

Калі вы жадаеце атрымаць пацвярджэнне перад выдаленнем запланаваных заданняў, выкарыстоўвайце опцыю -i з -r, што запытвае пацвярджэнне ад карыстальніка перад выдаленнем crontab карыстальніка.

Crontab Special String

Акрамя сінтаксісу, які мы абмяркоўвалі вышэй, мы можам таксама выкарыстоўваць восем спецыяльных радкоў, прапанаваных Crontab. Гэта не толькі зэканоміць наш час, але і палепшыць чытальнасць.
Спецыяльны радок
Апісанне
@reboot
Запусціць адзін раз, пасля запуску.
@штогод
Запускаць раз у год, г.зн. 0 0 1 1 *
@штогод
Тое самае, што @yearly
@месяц
Запускаць раз у месяц, г.зн. 0 0 1 * *
@штотыдзень
Выконвайце раз на тыдзень, г.зн. 0 0 * * 0
@штодня
Запускаць раз у дзень, г.зн. 0 0 * * *
@поўнач
Тое самае, што @daily
@гадзінна

Запуск раз у гадзіну, г.зн. 0 * * * *

Спецыяльныя прыклады радкоў Crontab

1. Crontab для штогадовага планавання задач

@yearly /scripts/greeting.sh

Мы можам выканаць вышэй адзін для адпраўкі віншавання з Новым годам, Ён будзе выконвацца ў першую хвіліну кожнага года.

2. Crontab для штомесячнага планавання задач.

@monthly /scripts/cleanup.sh

Мы можам выканаць вышэйзгаданы, каб выконваць некаторыя мерапрыемствы па ачыстцы ў пачатку кожнага месяца.

Падобным чынам мы можам выкарыстоўваць іншыя спецыяльныя радкі Crontab для штотыднёвых, штодзённых і штогадзінных мэтаў.

Каталог cron

  • Сістэмны адміністратар можа выкарыстоўваць агульнасістэмны расклад cron, які змяшчаецца ў папярэднім каталогу cron, як паказана ніжэй
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Прыклады Crontab у рэальным часе

Давайце абмяркуем некаторыя прыклады ў рэжыме рэальнага часу, якія звычайна выкарыстоўваюць сістэмны адміністратар або ІТ-спецыялісты.

Выдаліць пустыя файлы і каталог

Праверце гэта:  Як прайграваць відэа з тэрмінала ў Linux з дапамогай Mplayer

45 0 * * * techking.by знайсці /tmp -тып f -пусты -выдаліць

Прыведзены вышэй выраз cron знойдзе пустыя файлы і каталог з каталога /tmp і выдаліць іх. Гэта праца будзе выконвацца штодня ў 00:45. Нам трэба назваць імя карыстальніка, каб выканаць гэтую працу. У прыведзеным вышэй прыкладзе карыстальнік techking.by выконвае заданне cron.

Выконвайце некалькі задач з дапамогай аднаго крона

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Некалькі задач/заданняў можна падзяліць кропкай з коскай (;) і прызначыць іх аднаму выразу cron.

Інструменты фарматавання і тэставання Cron

Да гэтага часу мы абмяркоўвалі каманды і сінтаксіс crontab для планавання задачы. Але што рабіць, калі вы не сістэмны адміністратар і ваша праца не складаецца ў тым, каб рэгулярна наладжваць Cron, магчыма, немагчыма запомніць сінтаксіс, і гэта адкрывае месца для памылак. Не хвалюйцеся, у нас ёсць рашэнне гэтай праблемы.

У Інтэрнэце ёсць некалькі інструментаў фарматавання Cron.

# 1. Cron Job Generator Генератар заданняў cron

гэта вельмі зручны графічны інтэрфейс, дзе вы можаце ўказаць хвіліны, дні і шлях скрыпту для стварэння crontab.

Давайце возьмем прыклад у рэжыме рэальнага часу, калі я павінен выконваць /home/processMonitor.sh кожныя 5 хвілін з панядзелка па пятніцу.

Такім чынам, я атрымаў прыведзены ніжэй сінтаксіс Cron, які я магу змясціць у свой crontab, выканаўшы
кронтаб –э

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

гэта карысны вэб-планавальнік заданняў cron. Мы можам стварыць заданне cron, указаўшы URL для выкліку, мы можам усталяваць час, калі яно павінна быць выканана. Мы таксама можам задаць выраз cron або дадаць яго ўручную з апісальнай формы. Важна адзначыць, што мы можам дадаткова выкарыстоўваць базавую аўтэнтыфікацыю HTTP для невялікага ўзроўню бяспекі.

Не толькі гэта, Easycron таксама можа выкарыстоўвацца для дасягнення іншых мэтаў, такіх як стандартны выраз Cron, журналы выканання заданняў Cron, апавяшчэнне па электроннай пошце, асобныя журналы збояў і г.д.

# 3. Генератар Crontab Генератар кронтаб

гэта яшчэ адзін зручны інструмент для генерацыі crontab, і з дапамогай гэтага інструмента вы таксама можаце дадаць, калі хочаце захаваць вывад cron у файл або адправіць яго па электроннай пошце.

# 4. Гуру Crontab Гуру Кронтаб

гэта просты онлайн-рэдактар ​​выразаў раскладу cron. Акрамя таго, ён забяспечвае карысныя сродкі маніторынгу вашага cronjob. Усё, што нам трэба зрабіць, гэта скапіяваць прадстаўленую каманду і дадаць у канец вызначэння crontab. У выпадку, калі заданне cron не атрымоўваецца або нават не запускаецца, вы атрымаеце паведамленне па электроннай пошце.

У прыведзеным ніжэй прыкладзе заданне будзе выконвацца ў 04:05 кожны дзень, кожны месяц і кожны тыдзень.

# 5. Тэстар CRON Тэстар CRON

дазваляе нам праверыць азначэнні часу/даты cron. Можа ўзнікнуць сітуацыя, калі мы павінны расшыфраваць існуючы сінтаксіс cron для ліквідацыі непаладак або проста хочам правесці тэст.

Для гэтага мы можам выкарыстоўваць гэты інструмент. Усё, што нам трэба зрабіць, гэта скапіяваць і ўставіць наш выраз cron у поле вызначэння cron, затым выбраць колькасць ітэрацый і націснуць Test, каб убачыць розныя даты, калі ён будзе запускацца.

Давайце праверым адзін з нашых выразаў cron 4 3 */2 * *, які павінен запускацца ў 03:04(AM) кожныя два дні. Давайце праверым гэта з дапамогай тэстара cron.

Заключэнне Я спадзяюся, што сказанае вышэй дапаможа вам лепш зразумець Crontab і наладзіць заданні cron. Планаванне заданняў праз Cron – адна з многіх задач, якія выконвае адміністратар Linux. Калі вы зацікаўлены ў вывучэнні прасунутых навыкаў, праверце гэтавядома

.