Cron & crontab, paskaidrots

Lūkēns publicēts pirms kāda laika lieliska apmācība par cron un crontab kas, manuprāt, ir vērts dalīties. Cron ir sava veida ekvivalents ieplānotajiem uzdevumiem sistēmā Windows, tikai ar to tiek galā no termināļa. Tie, kas izvēlas vizuālo saskarni, lai sasniegtu to pašu mērķi, to var redzēt cits priekšmets.

Kas ir cron?

Cron nosaukums cēlies no grieķu valodas chronos, kas nozīmē "laiks". Unix operētājsistēmā cron ir regulārs fona procesu pārvaldnieks (dēmons), kas procesus vai skriptus palaiž regulāri (piemēram, katru minūti, dienu, nedēļu vai mēnesi). Procesi, kas jāizpilda, un to izpildes laiks ir norādīti crontab failā.

COMO darbi

Cron dēmons sākas no /etc/rc.d/ o /etc/init.d atkarībā no sadalījuma. Krona darbojas fonā, katru minūti pārbauda crontab uzdevumu tabulu / etc / crontab o lv / var / spole / cron veicamo uzdevumu meklējumos. Kā lietotājs mēs varam pievienot komandas vai skriptus ar uzdevumiem, lai automatizētu dažus procesus. Tas ir noderīgi, piemēram, lai automatizētu sistēmas atjaunināšanu vai labu dublēšanas sistēmu.

saistīto rakstu:
Apmācība: instalējiet .tar.gz un .tar.bz2 pakotnes

Kas ir Crontab?

Crontab ir vienkāršs teksta fails, kurā glabājas komandu saraksts, kas jāizpilda lietotāja norādītajā laikā. Crontab pārbaudīs skripta vai komandas izpildes datumu un laiku, izpildes atļaujas un to darīs fonā. Katram lietotājam var būt savs crontab fails, patiesībā / etc / crontab tiek pieņemts, ka tas ir root lietotāja crontab fails, kad parastie lietotāji (un pat root) vēlas izveidot savu crontab failu, tad mēs izmantosim komandu crontab.

Crontab ir vienkāršākais veids, kā pārvaldīt cron uzdevumus vairāku lietotāju sistēmās kā vienkāršs sistēmas lietotājs vai root lietotājs.

Izmantojot crontab

Mēs sākam ar vienkāršu piemēru.

Mēs automatizēsim sistēmas atjaunināšanu, lai novērstu kaitinošo tekstu "Man vienmēr ir jāatjaunina, un tas man nepatīk!"

Kā
saistīto rakstu:
Komandas, lai pārzinātu sistēmu (identificētu aparatūru un dažas programmatūras konfigurācijas)

Vispirms mēs izveidosim scenāriju. Šis skripts tiks izsaukts ar cron, un tajā būs visas instrukcijas, kuras mēs vēlamies, lai to izdarītu, tāpēc pirms iekļaušanas cron ir nepieciešams to pārbaudīt vairākos gadījumos un vairākos veidos, šāds vienkāršs atjaunināšanas skripts:

#! / bin / bash #script atjaunināšanas piemērs #izvēlieties izplatīšanu # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Noņemiet # no savas izplatīšanas līnijas. Gadījumā, ja tas ir Ubuntu / Debian, tas sākas ar apt-get.

Mēs saglabājam skriptu kā update.sh (piemēram, skripti direktorē jūsu māju). Mēs mainām minētā skripta izpildes atļaujas ar:

chmod a + x ~ / scripts / update.sh

Mēs pāris reizes izpildām skriptu, lai pārliecinātos, ka viss darbojas nevainojami, mēs pārveidojam nepieciešamo (tajā nedrīkst būt kļūdu, pretējā gadījumā cron kļūdu atkārtos tikai atkal un atkal). Tagad, lai pievienotu uzdevumu mūsu vietnei.

Pievienojiet uzdevumus crontab

Crontab izdevums tiek izpildīts ar crontab -e, dažos distros (piemēram, Ubuntu) tas dod mums iespēju izvēlēties vajadzīgo teksta redaktoru, pārējais mums paliek ar vi. Crontab fails izskatīsies apmēram šādi.

# mh dom mon dow lietotāja komanda

kur:

  • m atbilst skripta izpildes minūtei, vērtība svārstās no 0 līdz 59
  • h precīzs laiks, tiek apstrādāts 24 stundu formāts, vērtības svārstās no 0 līdz 23, 0 ir 12:00 pusnakts.
  • dāvana attiecas uz mēneša dienu, piemēram, varat norādīt 15, ja vēlaties palaist ik pēc 15 dienām
  • dow nozīmē nedēļas dienu, tā var būt skaitliska (no 0 līdz 7, kur 0 un 7 ir svētdiena) vai dienas pirmie 3 burti angļu valodā: pirmdiena, otrdiena, trešdiena, ceturtdiena, piektdiena, sestdiena, svētdiena.
  • lietotājs definē lietotāju, kurš izpildīs komandu, tā var būt root vai cits lietotājs, ja vien viņiem ir atļaujas izpildīt skriptu.
  • komanda attiecas uz komandu vai izpildāmā skripta absolūto ceļu, piemēram: /home/usuario/scripts/update.sh, ja tas izsauc skriptu, tam jābūt izpildāmam

Lai būtu skaidrs, daži izskaidroto cron uzdevumu piemēri:

15 10 * * * lietotājs /home/user/scripts/update.sh

Tas palaidīs skriptu update.sh katru dienu pulksten 10:15

15 22 * * * lietotājs /home/user/scripts/update.sh

Tas katru dienu paliks skriptu update.sh plkst. 10

00 10 * * 0 root apt-get -y atjauninājums Root lietotājs

Tas tiks atjaunināts katru svētdienu plkst. 10:00

45 10 * * saules saknes apt-get -y atjauninājums

Saknes lietotājs atjauninājumu veiks katru svētdienu (svētd.) Plkst. 10

30 7 20 11 * lietotājs /home/usuario/scripts/updata.sh

20. novembrī pulksten 7:30 lietotājs palaidīs skriptu

30 7 11 11 saules lietotājs /home/usuario/scripts/pastel_con_velitas.sh

11. novembrī pulksten 7:30 un tas ir svētdien, lietotājs svinēs savu sysadmin (tas ir, mani)

01 * * * * lietotājs /home/usuario/scripts/molestorecordatorio.sh

Kaitinošs atgādinājums katru stundu katru stundu katru stundu (NAV ieteicams).

Ar tiem joprojām var rīkoties īpašie diapazoni:

30 17 * * 1,2,3,4,5

Katru dienu no pulksten 5:30 pēcpusdienā no pirmdienas līdz piektdienai.

00 12 1,15,28 *

Pulksten 12 katra mēneša pirmajā, piecpadsmitajā un 28. dienā (ideāli piemērots algas aprēķināšanai)

Ja tas ir mulsinoši, crontab rokturi īpašas virknes, lai definētu šos diapazonus.

@reboot Palaidiet vienreiz, startējot
@gadu darbojas tikai reizi gadā: 0 0 1 1 *
@gadīgi tāds pats kā @gadīgi
@ mēnesī notiek reizi mēnesī, pirmajā dienā: 0 0 1 * *
@ katru nedēļu nedēļas pirmās stundas pirmā minūte. 0 0 * * 0 ″.
@ katru dienu, plkst. 12:00. 0 0 * * *
@pusnakts tāds pats kā @daily
@ stundas laikā katras stundas pirmajā minūtē: 0 * * * *

Tās izmantošana ir ļoti vienkārša.

@hourly lietotājs /home/user/scripts/molestorecordatorio.sh @mēneša lietotājs /home/user/scripts/backup.sh

Pēdējais bet ne sliktākais:

Cron darba vadība

crontab fails

Nomainiet esošo crontab failu ar lietotāja definētu failu

crontab -e

Rediģējiet lietotāja crontab failu, katra jaunā rinda būs jauns crontab uzdevums.

crontab -l

Uzskaitiet visus lietotāja crontab uzdevumus

crontab -d

Izdzēsiet lietotāja crontab

crontab -c rež

Definē lietotāja crontab direktoriju (tam ir jābūt lietotāja rakstīšanas un izpildes atļaujām)

crontab -u lietotājs

prefikss, lai apstrādātu cita lietotāja vietni, piemēri:

$ sudo crontab -l -u sakne $ sudo crontab -e user2 #crontab -d -u lietotājs

Šis rīks, tāpat kā daudzi citi, ir padziļināti un detalizētāk apskatāms:

Paldies Lucain!