Kā ieplānot uzdevumus Linux, izmantojot Cron un Crontab

Kā ieplānot uzdevumus Linux, izmantojot Cron un Crontab

Vai jūs zinājāt, ka Asmeņu skrējējs ir noteikts 2019. Tas ir pēc trim gadiem! Nemaz nepieminot Atpakaļ nākotnē 2 , kur viņi ceļo laikā uz priekšu 2015. gadā. Tomēr mums nav lidojošu automašīnu, un starp mums nav replikantu (cik es zinu).





Ir viegli justies vīlies ar pašreizējām tehnoloģijām, ja salīdzinām to ar izdomātiem nākotnes attēlojumiem. Tomēr mūsdienās mūsu tālruņi, datori un pat mājas var paveikt pārsteidzošas lietas. Spēja automatizēt uzdevumus ir viena no tām.





Katrs Linux lietotājs var gūt labumu no plānošanas uzdevumiem neatkarīgi no tā, vai tie ir saistīti ar sistēmu (piemēram, veco žurnālu tīrīšana un pakotņu atjaunināšana ) vai lietotāja apkalpošana (e -pasta pārbaude, aplāžu lejupielāde ...). Windows lietotājiem ir bijis uzdevumu plānotājs kopš Windows 95. Lietderību, kas veic to pašu darbu Linux, sauc par cron, un šeit mēs paskaidrosim, kā to izmantot.





kur es varu nopirkt suni pie manis

Kas ir Krona?

Cron ir sistēmas pakalpojums, kas darbojas fonā, pārbauda plānotos uzdevumus un izpilda tos, ja atrod. Uzdevumi, ko sauc arī par “cron job”, ir definēti īpašos konfigurācijas failos (crontabs), kurus cron skenē katru minūti. Dažādās Linux distribūcijās var atrast vairākas cron versijas. Piemēram, tiek saukta Fedora crona dakša kronija , un ir arī tādas fcron , bcron , un dcron . Dažiem ir papildu funkcijas, bet citi vairāk koncentrējas uz drošību, taču to visu pamatā ir viena un tā pati ideja.

Šī rokasgrāmata ir rakstīta vietnei vixie-cron, kas ir visizplatītākā cron versija un tā, kuru jūs atradīsit vietnē Ubuntu un tās atvasinājumos. Lai gan lielākā daļa instrukciju attiecas arī uz citām cron ieviešanām, var būt nelielas atšķirības, tāpēc, ja nolemjat pārslēgties, pārbaudiet to rokasgrāmatas.



Kas ir Crontab?

Ja jūs nopietni domājat par sava laika pārvaldību, jums, iespējams, ir sava veida kalendārs - lietotne vai vismaz papīra lapa. Crontab ir ļoti līdzīgs jūsu datora kalendāram. Tajā ir informācija par plānotajiem uzdevumiem, norādot cron, kuras komandas izpildīt, kurā laikā.

Patiesībā jūsu sistēmā ir vairāki crontabi. Katram lietotājam ir sava crontab, ieskaitot root (administrators). Lietotāja crontabs tiek saglabāts





/var/spool/cron/crontabs/

. The

crontab -l

komanda uzskaitīs pašreizējā lietotāja crontab failu. Saknes crontab varat pārbaudīt, izmantojot





sudo crontab -l

.

Turklāt ir sistēmas crontab fails

/etc/crontab

kas tiek izmantots visas sistēmas uzdevumiem. Parasti tie izpaužas kā izpildāmie, saknei piederošie skripti

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, un

/etc/cron.monthly/

mapēs un dažos izplatījumos

/etc/cron.d/

mape arī. Vispārīgi runājot, jums nevajadzētu nodarboties ar šiem uzdevumiem, jo ​​lielāko daļu no tiem automātiski izveido instalētās lietojumprogrammas.

Kā ieplānot uzdevumus ar Cron

Tas izklausās vienkārši: lai ieplānotu uzdevumus, vienkārši pievienojiet tos savam crontab. Tā kā crontab ir īpašs konfigurācijas fails, nav ieteicams to rediģēt manuāli. Tā vietā izmantojiet

crontab -e

komandu. Lai rediģētu saknes vai citu lietotāju crontabus, palaidiet komandu ar administratora tiesībām un pievienojiet lietotājvārdu aiz opcijas -u:

sudo crontab -u root -e
sudo crontab -u username -e

Crontab failam ir divas sadaļas. Pirmajā ir vides mainīgie, kas tiek iestatīti automātiski. Jūs varat droši mainīt mainīgos PATH, HOME un SHELL un mainīt MAIL mainīgo.

Faila otrā daļa ir faktiskais “grafiks” ar jūsu plānotajiem uzdevumiem. Katrs uzdevums tabulā aizņem rindu (rindu) ar kolonnām, kas attēlo šādas vērtības:

Lai veiksmīgi ieplānotu uzdevumus, jums nedaudz jāzina par crontab sintaksi:

  • Skaitļiem jābūt veseliem skaitļiem (veseliem skaitļiem), un zvaigznīti (*) jebkurā kolonnā varat izmantot kā aizstājējzīmi, kas nozīmē “katru minūti/dienu/mēnesi ...”.
  • Slejā “Mēneša diena” uzmanieties, lai nenoteiktu datumu, kas nav slejā “Mēnesis” norādītajā mēnesī (piemēram, 30. februāris).
  • Gan slejās “Mēnesis”, gan “Nedēļas diena” tiek pieņemti īsie vārdi attiecīgi mēnešiem un dienām, un tie nav reģistrjutīgi.
  • Slejā “Nedēļas diena” gan 0, gan 7 ir svētdiena. Slejā “Stunda” ir nepieciešams formāts “militārais laiks” (24 stundas), taču jūs nevarat izmantot skaitli 24-tā vietā 0 apzīmē 12:00. Tas ir tāpēc, ka sākas minūtes, stundas un nedēļas dienas vērtības pie 0, nevis 1.
  • Sekundes netiek atbalstītas, tāpēc jūs nevarat ieplānot uzdevumu noteiktā sekundē.

Jūs varat ieplānot iekļaujošos laika diapazonus, izmantojot defisi (14–22 sadaļā “Stundas”, uzdevums tiks izpildīts nepārtraukti no pulksten 14:00 līdz 22:00), vai izpildīt vienu uzdevumu vairākas reizes, definējot ar komatu atdalītu sarakstu (1, 3,5 sadaļā “Nedēļas diena” izpildīs uzdevumu pirmdien, trešdien un piektdien).

Tikmēr soļu vērtības tiek attēlotas ar slīpsvītru uz priekšu (/), un tās norāda izlaižu skaitu diapazonā; piemēram, 3-20/3 sadaļā “Stundas” veiks uzdevumu ik pēc trim stundām no pulksten 3:00 līdz 20:00. Tas ir noderīgi, ja vēlaties atkārtot uzdevumus ik pēc X stundām, jo ​​varat apvienot zvaigznīti un soli (*/X). Jūs varat apvienot diapazonus ar sarakstiem un darbības ar diapazoniem, kamēr izmantojat ciparus. Citiem vārdiem sakot, nav atļautas tādas kombinācijas kā “jan-mar” vai “Tue, Fri-Sun”.

Alternatīvi, tā vietā, lai iestatītu vērtību katrai kolonnai, rindas sākumā varat rakstīt @weekly, @yearly, @monthly, @daily vai @hourly, kam seko komanda. Plānojot šo uzdevumu, uzdevumi tiks izpildīti pirmajā iespējamajā instancē, tāpēc @weekly darbosies nedēļas pirmajā pusnaktī. Ja vēlaties izpildīt uzdevumu tūlīt pēc sistēmas (atkārtotas) palaišanas, izmantojiet komandu @reboot.

Šajā piemērā mēs esam ieplānojuši dublēšanu katru dienu 08:20 un 20:20. Fona attēls tiek automātiski mainīts ik pēc trim dienām pulksten 19:00, un skripts katru pirmdienu 10:20 un 20:20 pārbaudīs, vai nav pieejamas jaunas aplādes. Atgādinājums par dzimšanas dienu ir noteikts 25. martā, un tas tiek rādīts ik pēc 30 minūtēm noteiktajā laika posmā. Visbeidzot, skripts pārbauda e -pastu ik pēc 15 minūtēm no 8 līdz 20, bet tikai darba dienās. Jūs varat brīvi organizēt crontab ar atstarpēm un cilnēm starp kolonnām, bet ne tajās (nelieciet atstarpes starp komatiem, defisēm un slīpsvītrām).

Ja tas viss izklausās pārāk sarežģīti, neuztraucieties - jūs vienmēr varat paļauties uz internetu. Līdzīgi rīki Crontab ģenerators , Crontab.guru , un Corntab palīdz jums izveidot cron darbus, nezinot nevienu crontab sintaksi. Tie parāda, kad darbs tiks izpildīts nākamreiz, un nodrošina veidnes bieži lietotajiem izteicieniem. Crontab.guru ir labākais no visiem, jo ​​tas ļauj tiešā veidā pārbaudīt crontab sintaksi, lai jūs varētu uzreiz redzēt, kā izmaiņas ietekmēs grafiku.

Kā pārbaudīt, vai Cron darbi tiek izpildīti

Cron vajadzētu darboties klusi fonā un ļaut jums netraucēti strādāt, kamēr tas rūpējas par jūsu uzdevumiem. Bet kā jūs varat pārliecināties, ka tas tiešām darbojas?

Cron ir iebūvēta e-pasta paziņojumu funkcija, taču tam ir jāiestata vismaz vienkāršs vietējais pasta serveris. Ne daudzi mājas lietotāji vēlas to konfigurēt, un daudzi izplatījumi to nenodrošina pēc noklusējuma (piemēram, Ubuntu to nedara). Ātrākais veids, kā pārbaudīt cron, ir skenēt sistēmas žurnālu, izmantojot šo komandu:

cat /var/log/syslog | grep -i cron

Opcija -i padara mūsu vaicājumu nejutīgu. Iespējams, ka cron kaut kur būs savs žurnāla fails

/var/log/

, tāpēc skatieties tur, ja šī komanda nesniedz noderīgus rezultātus.

Ja jums ir nepieciešams saglabāt konkrēta cron darba izvadi, varat to novirzīt uz failu. Norādiet ceļu un faila nosaukumu crontab pēdējā slejā pēc komandas, kuru vēlaties palaist:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Izmantojot vienu simbolu>, fails tiek pārrakstīts katru reizi, kad komanda tiek palaista. Lai no tā izvairītos, izmantojiet >> - tā pievieno izvadi esošajam failam.

Ko darīt, ja Cron nedarbojas?

Var gadīties, ka esat pievienojis dažus uzdevumus, pārbaudījis sistēmas žurnālus un konstatējis, ka tie nedarbojas, kā vajadzētu. Šeit ir dažas lietas, kas jums jāapsver un jābūt uzmanīgām, mēģinot novērst problēmu.

Vai cron pakalpojums darbojas?

Kā jūs zināt, cron dēmonam vajadzētu darboties fonā. Pārliecinieties, vai tas tā patiešām ir. Pakalpojumu sauc par crond vai vienkārši cron.

Izplatīšanai, izmantojot systemd:

systemctl status cron

Izplatīšanai, izmantojot Upstart:

service cron status

Ja jūsu izplatīšanā tiek izmantota vecā System V init pieeja, uzskaitiet visus pakalpojumus ar:

pārvietot Android lietotni uz SD karti
initctl list

un pārbaudiet, vai cron ir iekļauts sarakstā.

Vai jums pat ir atļauts izmantot crontab failu?

Pārbaudi savu

/etc

mapi failiem ar nosaukumu

cron.allow

un

cron.deny

. Operētājsistēmā Ubuntu nevienam nevajadzētu pastāvēt, kas nozīmē, ka visiem lietotājiem ir atļauts pārvaldīt cron darbus. Tomēr, ja ir a

kā sociālo mediju vietnes pelna naudu
cron.allow

failā, tajā ir jābūt jūsu lietotājvārdam. Un otrādi, ja

cron.deny

fails pastāv, tajā nedrīkst būt jūsu lietotājvārds. Atstājot

cron.deny

fails tukšs nozīmē, ka tikai saknes un lietotāji, kas norādīti

cron.allow

var būt crontab faili.

Vai jūsu mainīgie ir pareizi iestatīti?

Crontab automātiski iestatīs jūsu SHELL mainīgo uz

/bin/sh

. Tomēr, ja jūsu izvēlētais apvalks ir zivis vai bash, jums vajadzētu mainīt SHELL mainīgo

. Tāpat mainīgais PATH pēc noklusējuma satur tikai dažus direktorijus. Šeit crontab meklē Linux komandas. Ja jūsu cron darbs neizdodas, iespējams, tas ir tāpēc, ka crontab “neredz” jūsu izmantoto komandu. Lai no tā izvairītos, pievienojiet direktorijus, kas satur komandas, mainīgajam PATH, atdalot tos ar kolu:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ja nevēlaties to rediģēt savā crontab, varat definēt šos mainīgos skriptā, kuru vēlaties palaist kā cron darbu.

Vai jūsu crontab formatējums ir pareizs?

Crontab sintakse nav īsti gluda. Pat ja jūs to pārbaudāt, izmantojot iepriekš minētos tiešsaistes rīkus, neliela kļūda joprojām var liegt cron izpildīt jūsu darbus. Esiet piesardzīgs, lai:

  • crontab faila beigās pievienojiet tukšu rindu
  • izvairieties no % zīmes ar slīpsvītru, ja jūsu komanda to ietver
  • rakstiet komentārus kā atsevišķas rindas, kas sākas ar #. Nerakstiet komentārus vienā rindā ar vides mainīgajiem vai blakus cron job komandām.

Vai tiešām ir jāizmanto terminālis?

Noteikti nē. KDE lietotāji var ieplānot cron darbus, izmantojot KCron, kas ir pieejams no Sistēmas iestatījumi> Uzdevumu plānotājs modulis. Ar vienkāršu saskarni, kas ļauj jums izvēlēties un pielāgot visu tikai ar dažiem peles klikšķiem, KCron ir patīkami izmantot.

Ja vēlaties GNOME, tad GNOME grafiks ir Tev. Pieeja ir līdzīga, lai gan saskarne, domājams, ir nedaudz atšķirīga. Tas piedāvā uzlaboto režīmu smalku modifikāciju veikšanai, un tam ir paneļa sīklietotne, no kuras varat tieši pārvaldīt uzdevumus.

Jums jāzina citi risinājumi, piemēram Crontab-UI un Minicron . Tie ir vairāk piemēroti lietotājiem, kuri pārvalda vairākas mašīnas un cron darbus, un viena no viņu izcilākajām funkcijām ir tīmekļa saskarne.

Vai ir kādas Cron alternatīvas?

Lai gan cron ir gandrīz Linux standarta uzdevumu plānotājs, tas noteikti nav vienīgais. The pēc pavēles ir ideāli piemērots ātriem, vienreizējiem darbiem, kurus var ieplānot tieši no komandrindas, bez īpašiem konfigurācijas failiem. Ja jums vajag vairāk, ir GNUbatch , kas ievieš atkarības jēdzienu. Izmantojot GNUbatch, jūs varat iestatīt īpašus nosacījumus katram darbam vai padarīt ieplānotu uzdevumu atkarīgu no iepriekšējā. Kaut ko līdzīgu var panākt ar sistēmas taimeri . Lai gan konfigurēšana ir mazāk praktiska nekā cron, sistemātiskie taimeri var atcerēties, vai dators bija izslēgts, un dators tika palaists nākamajā reizē, kad tas tika ieslēgts.

Tas ir kaut kas tāds, ko Cron nevar izdarīt viens. Tādējādi tas ir piemērots serveriem un datoriem, kas pastāvīgi darbojas, taču netiks izpildīts darbs, kas bija paredzēts, kamēr dators bija izslēgts. Šī ir vieta anakrons ienāk spēlē. Tehniski tā nav “alternatīva” vai cron aizstājējs. Tā vietā anacron papildina cron, un tas būtu jāizmanto kopā ar to, kā tas ir daudzos Linux izplatījumos, ieskaitot Ubuntu un uz Ubuntu balstītus produktus. Anacron reģistrē, kad pēdējoreiz tika izpildīts uzdevums, un pārbauda, ​​vai sistēmas izslēgšanas laikā nav bijuši neatbildēti gadījumi. Tas tiks palaists, kad atkal ieslēgsit datoru, taču katru uzdevumu var izpildīt tikai vienu reizi dienā.

Dažas cron versijas, piemēram, fcron, pēc noklusējuma piedāvā anacron funkcijas. Pieredzējuši lietotāji varētu vēlēties apskatīt Hcron vai SuperCron , kas sniedz daudzus uzlabojumus cron pamatfunkcijās, taču ir arī nedaudz sarežģīti pārvaldāmi.

Kā ar tevi? Kā jūs organizējat savus digitālos uzdevumus? Kādus uzdevumus jūs plānojat operētājsistēmā Linux? Kopīgojiet savus stāstus un padomus par cron izmantošanu komentāros.

Attēla kredīts: grafika dēlis Gonzalo Aragons, izmantojot Shutterstock

Kopīgot Kopīgot Čivināt E -pasts 12 video vietnes, kas ir labākas par YouTube

Šeit ir dažas YouTube alternatīvas video vietnes. Katrs no tiem aizņem atšķirīgu nišu, taču ir vērts tos pievienot grāmatzīmēm.

Lasīt Tālāk
Saistītās tēmas
  • Linux
  • Linux
Par autoru Ivana Isadora Devčiča(Publicēti 24 raksti)

Ivana Isadora ir ārštata rakstniece un tulkotāja, Linux mīļotāja un KDE fangirl. Viņa atbalsta un popularizē bezmaksas un atvērtā pirmkoda programmatūru, un viņa vienmēr meklē jaunas, novatoriskas lietotnes. Uzziniet, kā sazināties šeit .

Vairāk no Ivana Isadora Devcic

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu