Kako načrtovati naloge v Linuxu s Cronom in Crontabom

Kako načrtovati naloge v Linuxu s Cronom in Crontabom

Ali ste vedeli, da Iztrebljevalec je nastavljeno leta 2019? To je čez tri leta! Da ne omenjam Nazaj v prihodnost 2 , kjer potujejo naprej v leto 2015. Vendar nimamo letečih avtomobilov in med nami ni replikantov (kolikor vem).





Če se primerjamo z izmišljenimi upodobitvami prihodnosti, je enostavno razočarati se. Kljub temu lahko danes naši telefoni, računalniki in celo hiše naredijo neverjetne stvari. Sposobnost avtomatizacije nalog je ena izmed njih.





Vsak uporabnik Linuxa ima lahko koristi od načrtovanja opravil, ne glede na to, ali so povezani s sistemom (na primer čiščenje starih dnevnikov in posodabljanje paketov ) ali služenje uporabniku (preverjanje e -pošte, nalaganje podkastov ...). Uporabniki operacijskega sistema Windows imajo načrtovalnik opravil od operacijskega sistema Windows 95. Pripomoček, ki opravlja isto delo v Linuxu, se imenuje cron, tukaj pa bomo razložili, kako ga uporabljati.





koliko moraš biti star za uporabo paypala

Kaj je Cron?

Cron je sistemska storitev, ki deluje v ozadju, preverja načrtovana opravila in jih izvaja, če jih najde. Naloge - imenovane tudi 'cron jobs' - so opredeljene v posebnih konfiguracijskih datotekah (crontabs), ki jih cron pregleda vsako minuto. V različnih distribucijah Linuxa je mogoče najti več različic crona. Na primer, Fedorina vilica cron se imenuje cronie , in obstajajo tudi fcron , bcron , in dcron . Nekateri imajo dodatne funkcije, drugi pa so bolj osredotočeni na varnost, vendar vsi temeljijo na isti ideji.

Ta priročnik je napisan za vixie-cron, ki je najbolj razširjena različica crona in tista, ki jo boste našli v Ubuntuju in njegovih izpeljankah. Čeprav večina navodil velja tudi za druge izvedbe cron, lahko pride do manjših razlik, zato preverite njihove priročnike, če se odločite za preklop.



Kaj je Crontab?

Če resno razmišljate o upravljanju svojega časa, imate verjetno kakšen koledar - aplikacijo ali vsaj kos papirja. Crontab je zelo podoben koledarju vašega računalnika. V njem so informacije o načrtovanih opravilih, ki cronu povejo, katere ukaze naj izvaja ob kateri uri.

Pravzaprav je v vašem sistemu več crontabov. Vsak uporabnik ima svoj crontab, vključno s korenskim (skrbnik). Uporabniške crontabe so shranjene v





/var/spool/cron/crontabs/

. The

crontab -l

ukaz bo prikazal datoteko crontab za trenutnega uporabnika. Korenski crontab lahko preverite z





sudo crontab -l

.

Poleg tega obstaja sistemska datoteka crontab

/etc/crontab

ki se uporablja za naloge v celotnem sistemu. Običajno so v obliki izvršljivih skriptov, ki so v lasti korenov

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, in

/etc/cron.monthly/

mape in pri nekaterih distribucijah

/etc/cron.d/

mapo tudi. Na splošno se vam s temi nalogami ne bi bilo treba ukvarjati, saj jih večina samodejno ustvarijo nameščene aplikacije.

Kako načrtovati opravila s programom Cron

Sliši se preprosto: če želite razporejati opravila, jih preprosto dodajte v svojo crontab. Ker je crontab posebna konfiguracijska datoteka, je ni priporočljivo ročno urejati. Namesto tega uporabite

crontab -e

ukaz. Če želite urediti korenske datoteke ali crontabe drugih uporabnikov, zaženite ukaz s skrbniškimi pravicami in po možnosti -u dodajte njihovo uporabniško ime:

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

Datoteka crontab ima dva razdelka. Prva vsebuje spremenljivke okolja, ki se samodejno nastavijo. Varno lahko spremenite spremenljivke PATH, HOME in SHELL ter spremenite spremenljivko MAIL.

Drugi del datoteke je dejanski časovni razpored z vašimi načrtovanimi opravili. Vsako opravilo zaseda vrstico (vrstico) v tabeli s stolpci, ki predstavljajo naslednje vrednosti:

Za uspešen razpored opravil morate poznati nekaj o sintaksi crontab:

  • Številke morajo biti cela števila (cela števila), zvezdico (*) pa lahko uporabite v katerem koli stolpcu kot nadomestni znak, kar pomeni 'vsako minuto/dan/mesec ...'.
  • V stolpcu »Dan v mesecu« pazite, da ne nastavite datuma, ki se ne pojavi v mesecu, navedenem v stolpcu »Mesec« (na primer 30. februar).
  • Stolpca »Mesec« in »Dan v tednu« sprejemata kratka imena za mesece oziroma dneve in nista občutljivi na velike in male črke.
  • V stolpcu »Dan v tednu« sta 0 in 7 označena za nedeljo. Stolpec 'Ura' zahteva obliko 'vojaškega časa' (24 ur), vendar ne morete uporabiti številke 24-namesto tega 0 pomeni 12.00 To je zato, ker se začnejo vrednosti za minute, uro in dan v tednu pri 0 namesto 1.
  • Sekunde niso podprte, zato ne morete načrtovati opravila za določeno sekundo.

Kar lahko storite, je, da z vezajem razporedite vseobsegajoče časovne obsege (14-22 v razdelku »Ure« bo opravilo izvajalo neprekinjeno od 14. ure do 22. ure) ali pa eno opravilo izvedete večkrat tako, da določite seznam, ločen z vejicami (1, 3,5 v razdelku »Dan v tednu« bo opravil nalogo v ponedeljek, sredo in petek).

Medtem so vrednosti korakov predstavljene s poševnico naprej (/), ki označujejo število preskakovanj v obsegu; na primer, 3-20/3 v razdelku »Ure« bo izvajalo nalogo vsake tri ure od 3. do 20. ure. To je uporabno, če želite naloge ponavljati vsakih X ur, ker lahko združite zvezdico in korak (*/X). Obsege lahko kombinirate s seznami in koraki z obsegi, dokler uporabljate številke. Z drugimi besedami, kombinacije, kot sta „jan-mar“ ali „torek, pet-ned“, niso dovoljene.

Namesto da nastavite vrednost za vsak stolpec, lahko na začetku vrstice napišete samo @tedensko, @letno, @mesečno, @dnevno ali @urno, čemur sledi ukaz. Tako razporejene naloge se bodo izvajale na prvi možni stopnji, zato bi @weekly tekel ob polnoči prvi dan v tednu. Če želite takoj zagnati nalogo, ko se sistem znova zažene, uporabite ukaz @reboot.

V tem primeru smo načrtovali varnostno kopiranje vsak dan ob 08:20 in 20:20. Ozadje se samodejno spreminja vsake tri dni ob 19:00, skript pa bo vsak ponedeljek ob 10:20 in 20:20 preverjal nove poddaje. Opomnik za rojstni dan je nastavljen na 25. marec in teče vsakih 30 minut v določenem časovnem okviru. Na koncu skript preveri e -pošto vsakih 15 minut od 8. do 20., vendar le ob delavnikih. Svojo crontab lahko organizirate s presledki in zavihki med stolpci, vendar ne znotraj njih (ne postavljajte presledkov med vejicami, vezaji in poševnicami).

Če se vse skupaj sliši preveč zapleteno, ne skrbite - vedno se lahko zanesete na internet. Orodja, kot so Crontab generator , Crontab.guru , in Corntab vam pomagata ustvariti cron opravila, ne da bi poznali sintaksi crontab. Prikažejo vam, kdaj bo opravilo naslednje, in ponujajo predloge za pogosto uporabljene izraze. Crontab.guru je najboljši v skupini, saj vam omogoča preskušanje sintakse crontab v živo, tako da lahko takoj vidite, kako bodo vaše spremembe vplivale na urnik.

Kako preveriti, ali so opravila Cron izvedena

Cron naj bi v ozadju deloval tiho in vam omogočal nemoteno delo, medtem ko skrbi za vaše naloge. Kako pa se lahko prepričate, da dejansko deluje?

Cron ima vgrajeno funkcijo obveščanja po e-pošti, vendar to zahteva nastavitev vsaj enostavnega lokalnega poštnega strežnika. Ni veliko domačih uporabnikov, ki bi bili pripravljeni to konfigurirati, in malo distribucij to privzeto ponuja (na primer Ubuntu ne). Najhitrejši način preverjanja na cronu je skeniranje sistemskega dnevnika s tem ukazom:

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

Možnost -i naredi naše poizvedbo neobčutljivo. Možno je, da bo imel cron svojo datoteko dnevnika nekje v

/var/log/

, zato poglejte tam, če ta ukaz ne prinese uporabnih rezultatov.

Če morate shraniti izpis določenega opravila cron, ga lahko preusmerite v datoteko. Po ukazu, ki ga želite zagnati, podajte pot in ime datoteke v zadnjem stolpcu crontaba:

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

Z uporabo enega simbola> bo datoteka prepisana vsakič, ko se ukaz zažene. Če se želite temu izogniti, uporabite >> - dodaja izhod obstoječi datoteki.

Kaj pa, če Cron ne deluje?

Lahko se zgodi, da ste dodali nekaj opravil, preverili sistemske dnevnike in ugotovili, da se ne izvajajo tako, kot bi morali. Tukaj je nekaj stvari, na katere morate biti pozorni - pri tem pa bodite previdni - pri odpravljanju težave.

Ali storitev cron deluje?

Kot veste, bi moral biti cron demon v ozadju. Prepričajte se, da je res tako. Storitev se imenuje crond ali samo cron.

Za distribucije, ki uporabljajo systemd:

systemctl status cron

Za distribucije z uporabo programa Upstart:

service cron status

Če vaša distribucija uporablja pristop 'starega' sistema V init, navedite vse storitve z:

amazon naročilo pravi dostavljeno, vendar ne tukaj
initctl list

in preverite, ali je cron na seznamu.

Ali sploh lahko imate datoteko crontab?

Preveri svoj

/etc

mapo za datoteke z imenom

cron.allow

in

cron.deny

. V Ubuntuju ne bi smelo obstajati niti eno, kar pomeni, da lahko vsi uporabniki upravljajo cron opravila. Če pa obstaja a

kako najti svoje naročnike na youtube
cron.allow

datoteko, mora vsebovati vaše uporabniško ime. Nasprotno, če je

cron.deny

datoteka obstaja, vaše uporabniško ime ne bi smelo biti v njej. Zapustitev

cron.deny

prazna datoteka pomeni, da so samo root in uporabniki, navedeni v

cron.allow

lahko ima datoteke crontab.

Ali so vaše spremenljivke pravilno nastavljene?

Crontab samodejno nastavi spremenljivko SHELL na

/bin/sh

. Vendar, če vaša lupina po izbiri so ribe ali bash, spremenite spremenljivko SHELL

. Podobno spremenljivka PATH privzeto vsebuje le nekaj imenikov. Tu crontab išče ukaze za Linux. Če se vaše delo cron ne zažene, je to morda zato, ker crontab ne 'vidi' ukaza, ki ste ga uporabili. Da bi se temu izognili, dodajte spremenljivki PATH imenike, ki vsebujejo ukaze, ločene z dvopičjem:

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

Če tega ne želite urediti v crontabu, lahko te spremenljivke definirate v skriptu, ki ga želite zagnati kot opravilo cron.

Ali je vaše oblikovanje crontab na mestu?

Sintaksa Crontab ni ravno gladka. Tudi če to preverite s prej omenjenimi spletnimi orodji, lahko manjša napaka še vedno prepreči, da bi cron izvajal vaša opravila. Bodite previdni pri:

  • dodajte prazno vrstico na koncu datoteke crontab
  • pobegnite znak % s poševnico, če to vključuje vaš ukaz
  • komentarje zapišite kot ločene vrstice, ki se začnejo z #. Ne pišite komentarjev v isto vrstico kot spremenljivke okolja ali poleg ukazov cron job.

Ali morate res uporabljati terminal?

Absolutno ne. Uporabniki KDE lahko načrtujejo opravila cron s KCronom, ki je dostopen iz Sistemske nastavitve> Načrtovalnik opravil modul. S preprostim vmesnikom, ki vam omogoča, da v samo nekaj kliki z miško izberete in prilagodite vse, je KCron z veseljem uporabljati.

Če imate raje GNOME, potem Razpored GNOME je zate. Pristop je podoben, čeprav je vmesnik pričakovano nekoliko drugačen. Ponuja napredni način za drobne spremembe in ima programček na plošči, iz katerega lahko neposredno upravljate opravila.

Zavedati se morate drugih rešitev, na primer Crontab-UI in Minicron . Primernejši so za uporabnike, ki upravljajo z več stroji in opravili za cron, ena njihovih najbolj kul funkcij pa je spletni vmesnik.

Ali obstajajo alternative Cron?

Čeprav je cron precej standardni razporejevalnik opravil za Linux, zagotovo ni edini. The na ukaz je kot nalašč za hitra, enkratna opravila, ki jih je mogoče načrtovati kar iz ukazne vrstice, brez posebnih konfiguracijskih datotek. Če potrebujete več, obstaja GNUbatch , ki uvaja pojem odvisnosti. Z GNUbatch lahko za vsako opravilo nastavite posebne pogoje ali pa določite, da je načrtovana naloga odvisna od prejšnje. Nekaj ​​podobnega je mogoče doseči z sistemski časovniki . Čeprav so manj praktične za konfiguriranje kot cron, se lahko sistemski časovniki spomnijo, če je opravilo zamudilo po urniku, medtem ko je bil računalnik izklopljen, in ga zaženejo naslednjič, ko je vklopljen.

To je nekaj, česar cron ne more narediti sam. Kot tak je primeren za strežnike in računalnike, ki se stalno izvajajo, vendar ne bo izvajal opravila, ki je bilo načrtovano, ko je bil računalnik izklopljen. Tukaj je anakron pride v poštev. Tehnično ni 'alternativa' ali zamenjava za cron. Namesto tega anacron dopolnjuje cron in ga je treba uporabljati skupaj z njim, kar velja za številne distribucije Linuxa, vključno z izdelki Ubuntu in Ubuntu. Anacron beleži, kdaj je bilo opravilo nazadnje izvedeno, in preveri, ali je prišlo do zamujenih primerov, ko je bil sistem izklopljen. Zagnala jih bo, ko znova vklopite računalnik, vendar se lahko vsako opravilo izvede samo enkrat na dan.

Nekatere različice crona, na primer fcron, privzeto ponujajo funkcije anacrona. Napredni uporabniki bodo morda želeli pogledati Hcron ali SuperCron , ki prinašajo številne izboljšave osnovnih funkcij crona, vendar so tudi nekoliko zahtevne za upravljanje.

Kaj pa ti? Kako organizirate svoje digitalne naloge? Katere naloge načrtujete v Linuxu? V komentarjih delite svoje zgodbe in nasvete za uporabo crona.

Zasluge za sliko: tabla urnika avtor Gonzalo Aragon prek Shutterstock

Deliti Deliti Cvrkutati E-naslov 12 video mest, ki so boljša od YouTuba

Tu je nekaj alternativnih video mest za YouTube. Vsak zaseda drugačno nišo, vendar ga je vredno dodati med zaznamke.

Preberite Naprej
Sorodne teme
  • Linux
  • Linux
O avtorju Ivana Isadora Devcic(24 objavljenih člankov)

Ivana Isadora je samostojna pisateljica in prevajalka, ljubiteljica Linuxa in fantka KDE. Podpira in promovira brezplačno in odprtokodno programsko opremo ter vedno išče sveže, inovativne aplikacije. Ugotovite, kako stopiti v stik tukaj .

Več od Ivane Isadore Devcic

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti