Mga Trabaho sa Cron: Kumpletong Tutorial ng Mga Nagsisimula

Cron Jobs Complete Beginners Tutorial



Ang Cron ay ang pinaka kapaki-pakinabang na utility sa isang operating system na tulad ng Linux o UNIX na nagpapahintulot sa pagpapatakbo ng mga utos o script sa isang naibigay na iskedyul nang walang interbensyon ng gumagamit. Ang nakaiskedyul na mga utos at script ay pinangalanan din bilang mga trabaho sa cron. Karamihan ito ay ginagamit para sa pag-automate ng mga paulit-ulit na trabaho tulad ng pagpapatakbo ng naka-iskedyul na pag-backup, paglilinis ng mga pansamantalang file, pagpapanatili ng system, at iba't ibang mga paulit-ulit na trabaho. Ito ay katulad ng Task scheduler sa Windows OS.

Sa tutorial na ito, bibigyan ka namin ng pangunahing pagpapakilala ng lahat ng kailangan mong maunawaan para sa pag-iskedyul ng isang trabaho sa cron. Kasama dito ang pangunahing syntax ng cron, pag-edit ng file ng crontab, iskedyul ng trabaho na may cron na may ilang mga halimbawa, tingnan ang cron job, atbp.







Mga Pangunahing Kaalaman sa Cron Job

Unawain natin ang ilang mga pangunahing kaalaman sa isang cron job.



Ano ang Crond?

Ang Crond ay ang daemon sa system ng Linux na tumatakbo sa background at sinusuri ang bawat minuto upang makita kung mayroong anumang naka-iskedyul na trabaho sa oras na iyon. Kung meron, ginaganap ang trabahong iyon, kung hindi man mananatili itong hindi aktibo.



Cron Job Syntax

Ang syntax para sa cron job ay ang mga sumusunod:





* * * * *utos/iskrip

Mula sa kaliwa:

  • Ang una * ay tumutugma sa Minuto (0-59)
  • Ang pangalawa * ay tumutugma sa Mga Oras (0-23)
  • Ang pangatlo * ay tumutugma sa Araw ng buwan (1-31)
  • Ang ikaapat * ay tumutugma sa Buwan ng taon (1-12)
  • Ang ikalimang * ay tumutugma sa Araw ng linggo (0-6, Linggo hanggang Sabado)

Upang tukuyin ang maraming halaga sa isang patlang, gamitin ang sumusunod na mga simbolo ng operator:



  1. Asterisk (*): Upang tukuyin ang lahat ng mga posibleng halaga para sa isang patlang
  2. Dash (-): Sa s tukuyin ang isang saklaw ng mga halaga
  3. Ang kuwit (,): Upang tukuyin ang isang listahan ng mga halaga
  4. Paghihiwalay (/): Upang tukuyin ang isang halaga ng hakbang

Pag-edit ng Crontab File

Ang Crontab ay isang file na naglalaman ng mga naka-iskedyul na trabaho sa isang tukoy na syntax. Mayroong dalawang uri ng mga crontab file; isa para sa mga trabaho sa tukoy na tukoy sa system at ang iba pa para sa mga trabaho na tukoy na tukoy sa gumagamit.

Mga trabaho sa system cron

Ang mga job-wide cron job ay matatagpuan sa / atbp / crontab file at /etc/cron.d direktoryo, at sila ay nasagasaan /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly at /etc/cron.monthly. Ang isang administrator ng system lamang ang maaaring mag-access sa mga file na ito.

Maaaring tukuyin ng isang administrator ng system ang isang trabaho sa cron gamit ang sumusunod na utos:

$nano /atbp/crontab

Narito ang syntax ng trabaho sa / atbp / crontab file:

# min hr dayofmonth month dayofweek utos ng username
* * * * *gumagamit1ifconfig

Mga trabaho sa cron na partikular sa gumagamit

Ang mga trabaho sa cron na partikular sa gumagamit ay matatagpuan sa / var / spool / cron / crontabs direktoryo Bagaman maaari mong i-edit ang mga trabahong ito nang manu-mano, inirerekumenda na i-edit ang mga trabahong ito gamit ang crontab -e command.

Maaaring tukuyin ng isang karaniwang gumagamit ang isang trabaho sa cron gamit ang sumusunod na utos:

$crontab-At

Halimbawa, kung naka-log in ka bilang isang gumagamit ng pagsubok, ang pagpapatakbo ng crontab -e utos ay mag-e-edit ng crontab file para sa test user. Katulad nito, kung naka-log in ka bilang isang root user, i-e-edit ng crontab -e na utos ang crontab file para sa root user.

I-isyu ang utos sa ibaba sa Terminal upang i-edit ang crontab file para sa anumang ibang gumagamit:

$sudocrontab-u <username> -At

Halimbawa, kung naka-log in ka bilang isang test1 na gumagamit at nais mong i-edit ang crontab file para sa test2 na gumagamit, ang utos ay:

$sudocrontab-upagsubok2-At

Narito ang syntax ng cron job na maaaring idagdag sa crontab file:

# m h dayofmonth month dayofweek utos
* * * * * ifconfig

Maaari mong makita sa mga trabaho na tukoy sa gumagamit na walang naka-file na username.

Mga Utos ng Crontab

Ginagamit ang utos ng crontab upang mai-edit, ilista, at alisin ang mga trabaho sa cron:

  • crontab -e Upang mai-edit ang crontab file ng kasalukuyang gumagamit
  • crontab -l Upang maipakita ang mga nilalaman ng crontab file
  • crontab -u [username] Upang mai-edit ang crontab file ng anumang iba pang gumagamit
  • crontab -r Upang alisin ang crontab file ng kasalukuyang gumagamit
  • crontab -i Upang ipakita ang isang prompt bago alisin ang crontab file ng kasalukuyang gumagamit

Pag-iskedyul ng isang Trabaho kasama si Cron

Sa Cron, maaari kang magpatakbo ng trabaho sa isang tukoy na oras, petsa, at mga agwat na may isang minimum na yunit sa ilang minuto, ibig sabihin, maaari kang magpatakbo ng trabaho bawat minuto.

Upang mag-iskedyul ng trabaho sa cron, buksan ang file ng crontab gamit ang pamamaraang tinalakay sa nakaraang seksyon. Sa sandaling binuksan mo ang crontab file, sasabihan ka na pumili ng isang text editor. Mag-type ng numero upang mapili ang iyong ginustong text editor. Mag-scroll pababa hanggang sa ilalim ng file at magdagdag ng mga trabaho sa syntax na inilarawan sa itaas. Ang bawat linya sa isang file ay tumutukoy sa isang utos. Ang unang limang mga entry sa linya ay tumutukoy sa naka-iskedyul na oras, at ang huling entry ay tumutukoy kung aling utos o script ang dapat tumakbo.

Halimbawa:

Ang sumusunod na linya sa crontab file ay mag-iiskedyul ng trabaho sa cron upang patakbuhin ang utos / iskrip tuwing ika-30 minuto lumipas ang 5 oras sa bawat araw-ng-linggo mula Lunes hanggang Sabado.

* /30 5 * * 1-6utos/iskrip

Minuto

Sa patlang na ito, tinutukoy namin ang mga minuto kapag nais naming maipatupad ang utos. Ito ay tinukoy mula 0 hanggang 59. Ang * sa patlang na ito ay nangangahulugang patakbuhin ang trabaho bawat minuto. Sa linya sa crontab sa itaas, sinasabi ng * / 30 sa trabaho ng cron na patakbuhin ang tinukoy na utos / script bawat 30 minuto.

Mga oras

Sa larangan na ito, tinutukoy namin ang mga oras kung kailan nais naming maipatupad ang utos. Ito ay tinukoy mula 0 hanggang 23. Ang * sa patlang na ito ay nangangahulugang patakbuhin ang trabaho bawat oras. Sa linya sa crontab sa itaas, sinasabi ng halagang 5 sa trabaho ng cron na patakbuhin ang tinukoy na utos / iskrip tuwing limang oras.

Araw ng buwan

Sa larangang ito, tinukoy namin ang mga partikular na araw ng buwan kung nais naming maipatupad ang utos. Ito ay tinukoy mula 1 hanggang 31. Ang * sa patlang na ito ay nangangahulugang araw-araw. Sa linya sa crontab sa itaas, sinasabi ng * trabaho sa cron na patakbuhin ang tinukoy na utos / script araw-araw.

Buwan ng taon

Sa larangang ito, tinukoy namin ang mga partikular na buwan kung nais naming maipatupad ang utos. Ito ay tinukoy mula 1 hanggang 12. Ang * sa patlang na ito ay nangangahulugang buwan buwan. Sa linya sa crontab sa itaas, sinabi ng * sa trabaho ng cron na patakbuhin ang tinukoy na utos / script bawat buwan.

Araw sa isang linggo

Sa larangang ito, tinukoy namin ang mga partikular na araw ng linggo kapag nais naming maipatupad ang utos. Ito ay tinukoy mula 0 hanggang 6 mula Linggo hanggang Sabado (0 para sa Linggo at 6 para sa Sabado). Ang * sa patlang na ito ay nangangahulugang araw-araw sa isang linggo. Sa linya sa crontab sa itaas, sinabi ng * trabaho sa cron na patakbuhin ang tinukoy na utos / script araw-araw sa isang linggo.

Mga halimbawa ng Mga Trabaho sa Cron

Narito ang ilang mga halimbawa ng mga trabaho sa cron:

Patakbuhin ang isang trabaho sa cron bawat 15 minuto

Upang mag-iskedyul ng isang trabaho sa cron upang tumakbo bawat 15 minuto, idagdag ang linya sa ibaba sa crontab file:

* /labinlimang * * * *utos/iskrip

Patakbuhin ang isang trabaho sa cron tuwing 5 ng umaga araw-araw

Upang mag-iskedyul ng isang trabaho sa cron upang tumakbo ng 5 ng umaga araw-araw, idagdag ang linya sa ibaba sa crontab file:

0 5 * * *utos/iskrip

Patakbuhin ang isang trabaho sa cron ng 5 ng hapon araw-araw

Upang mag-iskedyul ng isang trabaho sa cron upang tumakbo ng 5 pm araw-araw, idagdag ang linya sa ibaba sa crontab file:

0 17 * * *utos/iskrip

Patakbuhin ang isang trabaho sa cron alas-9 ng umaga sa unang araw ng bawat buwan

Upang mag-iskedyul ng isang trabaho sa cron upang tumakbo ng 9 ng umaga sa unang araw ng bawat buwan, idagdag ang linya sa ibaba sa crontab file:

0 9 1 * *utos/iskrip

Patakbuhin ang isang trabaho sa cron bawat oras sa bawat ika-15 ng Marso

Upang mag-iskedyul ng isang trabaho sa cron bawat oras sa bawat ika-15 ng Marso, idagdag ang linya sa ibaba sa crontab file:

0 * labinlimang 3 *utos/iskrip

Patakbuhin ang isang cron job tuwing 5 oras

Upang mag-iskedyul ng isang trabaho sa cron bawat 5 oras, idagdag ang linya sa ibaba sa crontab file:

0 * /5 * * *utos/iskrip

Patakbuhin ang isang trabaho sa cron bawat 15 minuto

Upang mag-iskedyul ng isang trabaho sa cron upang tumakbo bawat 15 minuto, idagdag ang linya sa ibaba sa crontab file:

* /labinlimang * * * *

Paggamit ng Strings

Ang mga sumusunod na string ay maaari ding gamitin upang tukuyin ang isang trabaho:

  1. @ oras: Upang magpatupad ng isang trabaho minsan bawat oras, ibig sabihin, 0 * * * *
  2. @midnight: Upang magpatupad ng isang trabaho minsan araw-araw, ibig sabihin, 0 0 * * *
  3. @daily: pareho ng hatinggabi
  4. @weekly: Upang magpatupad ng isang trabaho minsan bawat linggo, ibig sabihin, 0 0 * * 0
  5. @monthly: Upang magpatupad ng trabaho isang beses bawat buwan, ibig sabihin, 0 0 1 * *
  6. @annually: Upang magpatupad ng isang trabaho minsan bawat taon, ibig sabihin, 0 0 1 1 *
  7. @yearly: kapareho ng @normal
  8. @reboot: Upang magpatupad ng isang trabaho nang isang beses sa bawat pagsisimula

Halimbawa, upang magpatakbo ng isang script o utos bawat linggo, ang entry sa crontab file ay:

@lingguhang utos/iskrip

Paunang Natukoy na Mga Direktoryo ng Cron

Mayroong ilang paunang natukoy na mga direktoryo ng cron sa Linux kung saan ang nakaimbak na mga script ay awtomatikong naisakatuparan. Kung inilalagay namin ang anumang script sa ilalim ng mga direktoryo na ito, awtomatiko itong maisasagawa sa naka-configure na oras.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

Halimbawa, upang magpatupad ng isang script minsan bawat buwan, kakailanganin mong ilagay ito sa /etc/cron.monthly.

Tingnan ang Mga Trabaho sa Cron

Tingnan ang mga trabaho para sa kasalukuyang gumagamit

Gamitin ang sumusunod na utos upang matingnan ang lahat ng nakaiskedyul na mga trabaho sa cron para sa kasalukuyang gumagamit:

$crontab-ang

Tingnan ang mga trabaho para sa mga root user

Upang matingnan ang lahat ng naka-iskedyul na trabaho ng root user, ilabas ang sumusunod na utos sa Terminal:

$pusa /atbp/crontab

Kakailanganin mong mag-login bilang isang root user o patakbuhin ang utos bilang sudo.

Tingnan ang mga trabaho para sa iba pang mga gumagamit

Upang matingnan ang lahat ng mga naka-iskedyul na trabaho ng isang tukoy na gumagamit, ilabas ang sumusunod na utos sa Terminal na papalitan ang ng tunay na pangalan ng gumagamit:

$sudocrontab-u <username> -ang

Upang patakbuhin ang utos na ito, kakailanganin mo ng mga pribilehiyo sa sudo.

Tingnan ang mga oras-oras na trabaho sa cron

Upang matingnan ang lahat ng mga trabaho sa cron na naka-configure upang tumakbo oras-oras, ilabas ang sumusunod na utos sa Terminal:

$ls -ang /atbp/cron.bawat oras

Tingnan ang mga araw-araw na trabaho sa cron

Upang matingnan ang lahat ng mga trabaho sa cron na na-configure upang tumakbo araw-araw, ilabas ang sumusunod na utos sa Terminal:

$ls -ang /atbp/cron.araw-araw/

Tingnan ang mga lingguhang mga trabaho sa cron

Upang matingnan ang lahat ng mga trabaho sa cron na na-configure upang tumakbo lingguhan, ilabas ang sumusunod na utos sa Terminal:

$ls -ang /atbp/cron.weekly/

Tingnan ang buwanang mga trabaho sa cron

Upang matingnan ang lahat ng mga trabaho sa cron na na-configure upang tumakbo buwan-buwan, ilabas ang sumusunod na utos sa Terminal:

$ls -ang /atbp/cron.bulan/

I-backup ang Lahat ng Trabaho ng Cron

Inirerekumenda na panatilihin ang isang backup ng lahat ng mga trabaho sa cron sa isang file upang makarekober ka sa kaso ng pagtanggal. Upang makagawa ng isang backup ng lahat ng kasalukuyang mga trabaho, gamitin ang operator ng pag-redirect upang i-redirect ang output ng crontab -l sa isang file.

$crontab-ang >backup_cron.txt

Inaalis ang Lahat ng Nakaiskedyul na Mga Trabaho sa Cron

Upang matanggal ang lahat ng naka-iskedyul na mga trabaho sa cron, gamitin ang watawat ng -r tulad ng sumusunod:

$crontab-r

Pahintulot sa Cron

Maaari naming limitahan ang pag-access sa crontab command sa pamamagitan ng dalawang file: / atbp / cron. payagan at / etc / cron.deny.

  • /etc/cron.allow - Magdagdag ng mga gumagamit (isa bawat linya) na nais mong payagan ang pag-access sa mga crontab command. Ang mga gumagamit ay maaaring magpatakbo ng mga trabaho sa iskedyul.
  • /etc/cron.deny - Magdagdag ng mga gumagamit (isa bawat linya) na nais mong tanggihan ang pag-access sa mga crontab command. Ang mga gumagamit na ito ay hindi maaaring magpatakbo ng naka-iskedyul na mga trabaho.

Crontab Syntax Generators

Mayroong ilang mga website na pinapayagan ang pagbuo ng syntax para sa mga crontab. Ginagawang mas madali ng mga website na ito upang makabuo ng crontab expression nang hindi kinakailangang tandaan ang syntax. Bagaman mayroong iba't ibang mga website na magagamit para sa mga generator ng syntax tulad ng crontabgenerator.com , crontab-generator.org , at cronmaker.com . Ang isa na higit kong ginusto at nahanap na kapaki-pakinabang ay ang crontab.guru . Batay sa pag-input ng gumagamit, bumubuo ito ng isang expression ng crontab na maaari mong kopyahin-i-paste sa crontab file.

Konklusyon

Sa tutorial na ito, ipinaliwanag namin ang mga pangunahing kaalaman sa mga trabaho sa cron, ang syntax nito, at kung paano ito i-set up. Tinalakay din namin kung paano tingnan ang mga trabaho sa cron, paglikha ng isang backup, at pag-aalis sa kanila kung hindi na kinakailangan.