Kā lietot Cron operētājsistēmā Linux Unix

Kas ir cron?


Cron ir programmas nosaukums, kas ļauj Linux / Unix lietotājiem automātiski izpildīt komandas vai skriptus (komandu grupas) noteiktā laikā vai datumā. To parasti izmanto administratīvo uzdevumu komandām, piemēram, dublējumiem, bet to var izmantot, lai palaistu jebko. Kā noteikts cron man lapās; tas ir dēmons, kas izpilda plānotās programmas.
Praktiski visos Linux izplatījumos Vixie Cron versiju izmanto persona, kas to izstrādājusi, kas ir Pols Viksijs, viens no Unix lielajiem guru, kā arī, cita starpā, BIND, kas ir viens no populārākajiem DNS serveriem, radītājs pasaulē.

Sākt cron


Cron ir dēmons (pakalpojums), kas nozīmē, ka tas jāsāk tikai vienu reizi, parasti ar to pašu sistēmas sāknēšanu. Cron pakalpojumu sauc par crond. Lielākajā daļā izplatījumu pakalpojums tiek instalēts automātiski un tiek startēts no sistēmas sāknēšanas, to var pārbaudīt vairākos veidos:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) darbojas … 
Ja jums ir instalēta pakalpojuma komanda:
 dienesta stāvoklis
 darbojas crond (pid 507) … 
to var arī pārskatīt, izmantojot komandu ps:
 ps -ef | grep crond
ja kāda iemesla dēļ cron nedarbojas, mēs varam to sākt ar:
 /etc/rc.d/init.d/crond start Crond startēšana: [Labi]
[color = rgb (0,0,0)] Ja pakalpojums nebūtu konfigurēts tā, lai sāktu no sākuma, pietiktu to pievienot ar komandu chkconfig: [/ color]
 chkconfig -līmenis 35 crond 
Ar to jūs to pievienotu, lai palaistu 3. un 5. līmeni, lai tas sāktos sistēmas sāknēšanas laikā.

Izmantojot cron


Ir vismaz divi dažādi veidi, kā izmantot cron:
Pirmais ir direktorijā / etc, kur, visticamāk, atradīsit šādus direktorijus:
  • cron.stundu
  • cron.daily
  • cron.nedēļas
  • ik mēnesi
Ja skripta fails ir ievietots kādā no šiem direktorijiem, skripts darbosies katru stundu, katru dienu, katru nedēļu vai katru mēnesi atkarībā no direktorija.
Lai skripts tiktu izpildīts, tam ir jābūt kaut kas līdzīgs šim:
 #! / bin / sh #script, kas ģenerē rezerves cd / usr / documents tar czf * backup cp backup / other_directory /
Mums jānosaka, ka pirmā rinda sākas ar #!, Kas norāda, ka tas ir bash čaulas skripts, pārējās rindas ir komandas, kuras mēs vēlamies izpildīt. Šo skriptu varētu nosaukt, piemēram, backup.sh, un mums ir jāmaina arī atbilstošās atļaujas, lai to varētu izpildīt, piemēram:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 saknes sakne 0 20. jūlijs 09:30 backup.sh
"X" īpašnieka atļauju grupā (-rwx) norāda, ka to var izpildīt.
Ja mēs atstāsim šo skriptu cron.hourly, tad tas tiks izpildīts katru stundu ar vienu minūti katru dienu, vēlāk es paskaidrošu, kāpēc.
Otrs veids, kā palaist vai izmantot cron, ir tieši manipulēt ar failu / etc / crontab. Noklusējuma instalējot dažādus Linux izplatījumus, šis fails izskatīsies apmēram šādi:
 cat / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # run-parts 01 * * * * root run-parts / etc / cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weelly 42 4 1 * * root run-parts /etc/cron.monthly
Pirmās četras rindas ir mainīgie, kas norāda sekojošo:
SHELLTā ir "čaula", zem kuras skrien kronis. Ja tas nav norādīts, pēc noklusējuma tiks ņemts rindā / etc / passwd norādītais lietotājs, kurš izpilda cron.
PATHSatur vai norāda ceļu uz direktorijiem, kuros cron meklēs izpildāmo komandu. Šis ceļš atšķiras no sistēmas vai lietotāja globālā ceļa.
PASTSTas ir tas, kuram tiek nosūtīta komandas izvade (ja tai ir kāda izeja). Cron nosūtīs e -pastu ikvienam, kurš ir norādīts šajā mainīgajā, tas ir, tam jābūt derīgam sistēmas vai kādas citas sistēmas lietotājam. Ja tas nav norādīts, cron nosūtīs pastu lietotājam, kuram pieder izpildāmā komanda.
MĀJASTas ir komandas cron saknes vai galvenais direktorijs, ja tas nav norādīts, tad sakne būs tā, kas norādīta failā / etc / passwd, kas atbilst lietotājam, kurš izpilda cron.
komentāri ir apzīmēti ar # rindas sākumā.
Pēc iepriekš minētā parādās rindas, kas izpilda pareizi plānotos uzdevumus. Nav ierobežojumu, cik uzdevumu var būt, viens katrā rindā. Lauki (Tie ir 7) kas veido šīs līnijas, tiek veidotas šādi:
 Minūtes stundas dienaMēneša mēneša diena nedēļas nedēļa Lietotāja komanda
  • Lauks: Apraksts
  • Minūte: Tas kontrolē tās stundas minūti, kurā komanda tiks izpildīta, šai vērtībai jābūt no 0 līdz 59.
  • Laiks: Tas kontrolē komandas izpildes laiku, tā ir norādīta 24 stundu formātā, vērtībām jābūt no 0 līdz 23, 0 ir pusnakts.
  • Mēneša diena: Mēneša diena, kurā vēlaties izpildīt komandu. Piemēram, tiks norādīts 20, lai izpildītu komandu mēneša 20. datumā.
  • Mēnesis: Mēnesis, kurā komanda tiks izpildīta, to var norādīt skaitliski (1–12) vai ar mēneša nosaukumu angļu valodā-tikai pirmos trīs burtus.
  • Darba diena: Nedēļas dienā komanda tiks izpildīta, tā var būt skaitliska (0-7) vai pēc dienas nosaukuma angļu valodā, tikai pirmie trīs burti. (0 un 7 = svētdiena)
  • Lietotājs: Lietotājs, kurš izpilda komandu.
  • Komanda: Komanda, skripts vai programma, kuru vēlaties palaist. Šajā laukā var būt vairāki vārdi un atstarpes.
Zvaigznīte * kā vērtība pirmajos piecos laukos norāda lauka sākumu un beigas, tas ir, visu. * Minūšu minūtē norāda visas minūtes.
Lai labāk izprastu šo pirmo 5 lauku un zvaigznīti, es labāk izmantošu vairākus piemērus:
Piemērs:
 Apraksts 01 * * * * Darbojas 1 minūtē katru stundu katru dienu 158 * * * 8:15. katru dienu 15 20 * * * 20:15. katru dienu 00 5 * * 0 5:00 katru svētdienu * 5 * * Saule Katru minūti no pulksten 5:00 5:59 no rīta katru svētdienu 45 19 1 * * 19:45 Katra mēneša 1. diena 01 * 20 7 * Katras stundas 1 minūtē 20. jūlijā 10 10 1 * 12 1 1:10 Katru decembra pirmdienu 00 12 16 * Trešdiena Katra mēneša 16. pusdienlaikā un trešdienā 30 9 20 7 4 9.30. no 20. jūlija un tas ir ceturtdiena 30 9 20 7 * 9.30. no 20. jūlija neatkarīgi no nedēļas dienas 20 * * * 6 līdz katras stundas 20. minūtei sestdienās 
Laukos ir iespējams norādīt arī sarakstus. Saraksti var būt 1,2,3,4 vai 1-4, kas būtu vienādi. Cron tādā pašā veidā atbalsta palielinājumu sarakstos, kas norādīti šādi:
 Vērtība vai saraksts / pieaugums
Atkal sarakstus un palielinājumus ir vieglāk saprast, izmantojot piemērus:
Piemērs:
 Apraksts 59 11 * 1-3 1,2,3,4,5 11:59 No pirmdienas līdz piektdienai, no janvāra līdz martam 45 * 10-25 * 6-7 Visu stundu 45 minūtēs no visu mēnešu 10 līdz 25 un ka diena ir sestdiena vai svētdiena 10,30,50 * * * 1,3,5 Pirmdienās, trešdienās un piektdienās visu stundu 10, 30 un 50 minūtēs * / 15 10-14 * * * Ik pēc piecpadsmit minūtēm no pulksten 10:00 pulksten 14:00. * 12 1-10 / 2 2,8 * Visas minūtes pulksten 12, 1,3,5,7 un 9. februārī un augustā. (Pieaugums trešajā laukā ir 2 un sākas no 1) 0 * / 5 1-10,15,20-23 * 3 Ik pēc 5 stundām no katra mēneša 1. līdz 10. dienai, 15. dienai un no 20. līdz 23. dienai, un ka diena ir trešdiena 3/3 2/4 2 2 2 Ik pēc 3 minūtēm, sākot ar 3., 3., 9., 9., 2., 10., utt. minūti (ik pēc 4 stundām, sākot no 2. stundas) 2. februārī un tā ir otrdiena
Kā redzams pēdējā piemērā, cron uzdevums, kas tika piešķirts šai rindai ar šiem datiem, tiks izpildīts tikai tad, ja ir izpildīti 5 lauki (AND). Tas ir, lai uzdevums tiktu izpildīts, tam jābūt otrdien, 2. februārī, 02:03. Tā vienmēr ir Būla UN, kas atgriež patiesu tikai tad, ja visi 5 lauki ir patiesi konkrētajā minūtē.
[color = rgb (0,0,0)] Iepriekšējais gadījums skaidri parāda, ka: [/ color]
Programma cron tiek izsaukta katru minūti un izpilda uzdevumus, kuru laikā tās lauki tiek izpildīti tieši šajā minūtē.
Ieskaitot lietotāja lauku un komandu, crontab rindas varētu būt šādas:
 0 22 * ​​* * root /usr /daily backup.sh 0 23 * * 5 root /usr /week backup.sh 0 8.20 * * * jcarrillo mail -s "sistēma, kas darbojas" [email protected]
Pirmās divas rindiņas izpilda saknes lietotājs, un pirmā izpilda skriptu, kas ģenerē ikdienas dublējumu, katru dienu pulksten 22:00. Otrais izpilda katru piektdienu pulksten 23:00 skriptu, kas ģenerē iknedēļas dublējumu. Trešo rindu izpilda lietotājs sergio, un tā tiktu izpildīta katru dienu 8 no rīta un 8 vakarā, un komanda ir nosūtīt e -pastu uz kontu [email protected] ar tēmu "sistēma darbojas", veids, kā administrators var zināt, ka noteiktā laikā ir aktīva attālā sistēma, bet, ja viņš tajā laikā nesaņem e -pastu, kaut kas nav kārtībā.
Būt saknei, tad ir iespējams, tieši modificēt crontab:
 vim / etc / crontab 
Tas ir tieši mainīts.

Darbinot Cron ar vairākiem lietotājiem, komanda crontab


Linux ir daudzlietotāju sistēma un cron ir viena no lietojumprogrammām, kas atbalsta darbu ar vairākiem lietotājiem vienlaikus. Katram lietotājam var būt savs crontab fails, patiesībā tiek uzskatīts, ka / etc / crontab ir saknes lietotāja crontab fails, lai gan nav problēmu, ka tiek iekļauti citi lietotāji, un līdz ar to arī sestais lauks, kas precīzi norāda, kas ir lietotājs. kas izpilda uzdevumu un ir nepieciešama:
 / etc / crontab

Bet, kad normāli lietotāji (un pat sakne) vēlaties izveidot savu crontab failu, tad mēs izmantosim crontab komanda.
Katalogā / var / spool / cron (var atšķirties atkarībā no izplatīšanas), cron fails tiek ģenerēts katram lietotājam, lai gan šis fails ir teksts, to nevajadzētu rediģēt tieši.
Tad ir divas situācijas, tieši ģenerējot crontab failu ar komandu:
 crontab -e
Ar kuru tiks atvērts noklusējuma redaktors (parasti vi) ar failu ar nosaukumu tukšs crontab un kur lietotājs ievadīs savu uzdevumu tabulu, un tas tiks automātiski saglabāts kā / var / spool / cron / user.
Otrs gadījums ir tāds, ka lietotājs rediģē parastu teksta failu ar uzdevumu ierakstiem un kā piemēru nosauc to par “my_cron”, tad komanda $> crontab my_cron būs atbildīga par tā izveidi kā lietotāja cron failu mapē / var / spool / cron / user:
 vi my_cron # izdzēš failus no koplietotās mapes 0 20 * * * rm -f / home / sergio / shared / * # izpilda skriptu, kas katra mēneša pirmajā dienā veic dokumentu mapes dublēšanu 0 22 1 * * / home / sergio / month support.sh # ik pēc 5 stundām no pirmdienas līdz piektdienai, viņš pārliecinās, ka atļaujas ir pareizas manās mājās 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq (the fails)> ls my_cron> crontab my_cron (iestatīts uz / var / spool / cron / user)
Apkopojot iepriekš minēto un apsverot citas iespējas crontab:
 crontab file.cron (iestatīs failu.cron kā lietotāja crontab) crontab -e (atvērs iepriekš iestatīto redaktoru, kurā var izveidot vai rediģēt crontab failu) crontab -l (uzskaita lietotāja pašreizējo crontab, viņu cron darbus) crontab -r (noņem lietotāja pašreizējo crontab)
Dažos izplatījumos, rediģējot parastā lietotāja crontabus, ir jārestartē pakalpojums, lai varētu pārlasīt crontab failus mapē / var / spool / cron.
 servisa crond restart 
Lai labāk izprastu, kā sākt / apturēt / restartēt pakalpojumus, šajā rakstā atradīsit vairāk informācijas.

Piekļuves kontrole cron


Cron ļauj jums kontrolēt, kuri lietotāji var vai nevar izmantot cron pakalpojumus. Tas tiek panākts ļoti vienkāršā veidā, izmantojot šādus failus:
  • /etc/cron.allow
  • /etc/cron.deny
Lai liegtu lietotājam izmantot komandu cron vai drīzāk komandu crontab, pietiek ar lietotājvārda pievienošanu failam /etc/cron.deny, lai to varētu izmantot, tad lietotājvārds jāpievieno /etc/cron.allow, ja kādu iemeslu dēļ vēlaties noliegt cron lietošanu visiem lietotājiem, tad varat ierakstīt vārdu ALL cron.deny sākumā un ar to pietiktu.
 echo ALL >> / etc / cron.deny vai pievienot citu lietotāju cron.allow echo juan >> / etc / cron.allow
Ja ne faila cron.allow, ne faila cron.deny nepastāv, tad teorētiski cron lietošana ir bez lietotāja ierobežojumiem. Lietotājvārdu pievienošana failā cron.allow, neradot failu cron.deny, radīs tādu pašu efektu kā to izveidojot ar vārdu ALL. Tas nozīmē, ka pēc tam, kad cron.allow ir izveidots ar vienu lietotāju, pārējie lietotāji, kuri vēlas izmantot cron, vienmēr būs jānorāda šajā failā.
SecinājumiMēs esam runājuši par tā darbību, es ceru, ka jūs sapratāt, ka daži izplatījumi, piemēram, Red Hat, ietver tādu variantu kā anacron, kas var kompensēt dažus cron trūkumus, pat ja tas tiek darīts jebkurā līmenī, sākot no visvienkāršākā līdz vismodernākajam. , ieteicams izprast tās darbību. Ja atrodat kādus jautājumus vai jums ir ieteikums, nevilcinieties to ievietot komentāros.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave