Kako rasporediti zadatke u Linuxu s Cronom i Crontabom

Kako rasporediti zadatke u Linuxu s Cronom i Crontabom

Jeste li znali da Trkač oštrica je postavljeno u 2019? To je za tri godine od sada! Ne spominjati Povratak u budućnost 2 , gdje putuju kroz vrijeme naprijed u 2015. Ipak, nemamo leteće automobile i među nama nema replikanata (koliko ja znam).





Lako je osjećati razočaranje trenutnom tehnologijom kad je usporedimo s izmišljenim prikazima budućnosti. Ipak, ovih dana naši telefoni, računala, pa čak i kuće mogu učiniti nevjerojatne stvari. Sposobnost automatizacije zadataka jedan je od njih.





Svaki korisnik Linuxa može imati koristi od zadataka planiranja, bilo da su povezani sa sustavom (poput čišćenja starih zapisa i ažuriranje paketa ) ili posluživanje korisnika (provjera e -pošte, preuzimanje podcasta ...). Korisnici Windowsa imaju Task Scheduler još od Windowsa 95. Pomoćni program koji radi isti posao na Linuxu zove se cron, a ovdje ćemo objasniti kako ga koristiti.





kako pronaći nečiji popis na amazonu

Što je Cron?

Cron je usluga sustava koja radi u pozadini, provjerava ima li zakazanih zadataka i izvršava ih ako ih pronađe. Zadaci - koji se nazivaju i 'cron poslovi' - definirani su u posebnim konfiguracijskim datotekama (crontabs), koje cron skenira svake minute. Nekoliko verzija crona može se pronaći na različitim distribucijama Linuxa. Na primjer, zove se Fedorina vilica crona prijatelju , a postoje i fcron , bcron , i dcron . Neki imaju dodatne značajke, dok su drugi više usmjereni na sigurnost, ali svi se temelje na istoj ideji.

Ovaj vodič je napisan za vixie-cron, najrašireniju verziju crona i onu koju ćete pronaći na Ubuntu-u i njegovim izvedenicama. Iako se većina uputa odnosi i na druge implementacije crona, mogu postojati manje razlike pa provjerite njihove priručnike ako se odlučite za promjenu.



Što je Crontab?

Ako mislite ozbiljno upravljati svojim vremenom, vjerojatno imate nekakav kalendar - aplikaciju ili barem komad papira. Crontab je vrlo sličan kalendaru vašeg računala. On sadrži informacije o planiranim zadacima, govoreći cronu koje naredbe treba pokrenuti u koje vrijeme.

Zapravo, nekoliko crontaba je na vašem sustavu. Svaki korisnik ima vlastiti crontab, uključujući root (administrator). Korisnički crontabi pohranjeni su u





/var/spool/cron/crontabs/

. The

crontab -l

naredba će ispisati datoteku crontab za trenutnog korisnika. Korijenski crontab možete provjeriti pomoću





sudo crontab -l

.

Osim toga, postoji datoteka crontab sustava

/etc/crontab

koji se koristi za zadatke na cijelom sustavu. Obično imaju oblik izvršnih skripti u vlasništvu root-a smještenih u

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, i

/etc/cron.monthly/

mape, a na nekim distribucijama i

/etc/cron.d/

mapu također. Općenito govoreći, ne biste se trebali baviti tim zadacima jer većinu njih automatski stvaraju instalirane aplikacije.

Kako rasporediti zadatke s Cronom

Zvuči jednostavno: da biste rasporedili zadatke, samo ih dodajte u crontab. Budući da je crontab posebna konfiguracijska datoteka, ne preporučuje se njezino ručno uređivanje. Umjesto toga, koristite

crontab -e

naredba. Da biste uredili root ili crontabs drugih korisnika, pokrenite naredbu s administratorskim ovlastima i dodajte njihovo korisničko ime nakon opcije -u:

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

Datoteka crontab ima dva odjeljka. Prva sadrži varijable okruženja koje se postavljaju automatski. Možete sigurno promijeniti varijable PATH, HOME i SHELL te promijeniti varijablu MAIL.

Drugi dio datoteke je stvarni 'raspored' s vašim zakazanim zadacima. Svaki zadatak zauzima redak (redak) u tablici, sa stupcima koji predstavljaju sljedeće vrijednosti:

Da biste uspješno rasporedili zadatke, morate znati nešto o sintaksi crontab:

  • Brojevi trebaju biti cijeli brojevi (cijeli brojevi), a zvjezdicu (*) možete koristiti u bilo kojem stupcu kao zamjenski znak, što znači 'svaka minuta/dan/mjesec ...'.
  • U stupcu 'Dan u mjesecu' pazite da ne postavite datum koji se ne pojavljuje u mjesecu navedenom u stupcu 'Mjesec' (na primjer, 30. veljače).
  • Stupci 'Mjesec' i 'Dan u tjednu' prihvaćaju kratke nazive za mjesece, odnosno dane i ne razlikuju velika i mala slova.
  • U stupcu 'Dan u tjednu' i 0 i 7 označavaju nedjelju. Stupac 'Sat' zahtijeva format 'vojnog vremena' (24 sata), ali ne možete koristiti broj 24-umjesto toga 0 označava 12 sati To je zato što vrijednosti za minute, sate i dan u tjednu počinju na 0 umjesto 1.
  • Sekunde nisu podržane, pa ne možete zakazati zadatak u određenoj sekundi.

Ono što možete učiniti je zakazati sveobuhvatne vremenske raspone pomoću crtice (14-22 u odjeljku 'Sati' će izvršavati zadatak neprekidno od 14 do 22 sata) ili pokrenuti jedan zadatak nekoliko puta definiranjem popisa odvojenih zarezima (1, 3,5 u okviru 'Dana u tjednu' izvršit će zadatak u ponedjeljak, srijedu i petak).

U međuvremenu, vrijednosti koraka predstavljene su kosom crtom (/), a one označavaju količinu preskakanja unutar raspona; na primjer, 3-20/3 pod 'Sati' izvršavat će zadatak svaka tri sata od 3 do 20 sati. Ovo je korisno kada želite ponavljati zadatke svakih X sati, jer možete kombinirati zvjezdicu i korak (*/X). Raspone možete kombinirati s popisima i korake s rasponima sve dok koristite brojeve. Drugim riječima, kombinacije poput 'jan-mar' ili 'uto, pet-ned' nisu dopuštene.

Alternativno, umjesto postavljanja vrijednosti za svaki stupac, možete samo napisati @tjedno, @godine, @mjesečno, @svakodnevno ili @sat na početku retka, nakon čega slijedi naredba. Ovako raspoređeni, zadaci će se izvoditi u prvoj mogućoj instanci, pa će se @weekly izvoditi u ponoć prvog dana u tjednu. Ako želite pokrenuti zadatak odmah pri ponovnom pokretanju sustava, upotrijebite naredbu @reboot.

U ovom primjeru zakazali smo sigurnosnu kopiju svaki dan u 08:20 i 20:20. Pozadina se automatski mijenja svaka tri dana u 19:00, a skripta će provjeravati ima li novih podcasta svaki ponedjeljak u 10:20 i 20:20. Podsjetnik za rođendan postavljen je za 25. ožujka i izvodi se svakih 30 minuta u navedenom vremenskom okviru. Konačno, skripta provjerava e -poštu svakih 15 minuta od 8 do 20, ali samo radnim danom. Možete slobodno organizirati svoj crontab s razmacima i tabulatorima između stupaca, ali ne unutar njih (ne stavljajte razmake između zareza, crtica i kosih crta).

Ako vam sve ovo zvuči previše komplicirano, ne brinite - uvijek se možete osloniti na internet. Alati poput Crontab Generator , Crontab.guru , i Corntab vam pomažu u stvaranju cron poslova bez poznavanja sintakse crontab. Oni vam pokazuju kada će se posao sljedeći izvoditi i pružaju predloške za uobičajene izraze. Crontab.guru je najbolji u hrpi jer vam omogućuje testiranje sintakse crontab uživo, tako da možete odmah vidjeti kako će vaše promjene utjecati na raspored.

Kako provjeriti jesu li Cron poslovi izvršeni

Cron bi trebao raditi tiho u pozadini i omogućiti vam nesmetan rad dok se brine za vaše zadatke. No, kako možete biti sigurni da zaista radi?

Cron ima ugrađenu značajku obavijesti e-poštom, ali to zahtijeva postavljanje barem jednostavnog lokalnog poslužitelja pošte. Nema mnogo kućnih korisnika koji su spremni to konfigurirati, a ni mnoge distribucije to ne omogućuju prema zadanim postavkama (na primjer, Ubuntu ne). Najbrži način provjere na cronu je skeniranje dnevnika sustava pomoću ove naredbe:

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

Opcija -i čini naš upit neosjetljivim na velika i mala slova. Moguće je da će cron negdje u sebi imati vlastitu datoteku dnevnika

/var/log/

, pa pogledajte tamo ako ova naredba ne da korisne rezultate.

Ako trebate spremiti izlaz određenog cron posla, možete ga preusmjeriti u datoteku. Navedite put i naziv datoteke u zadnjem stupcu crontaba, nakon naredbe koju želite pokrenuti:

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

Korištenje jednog simbola> prebrisat će datoteku svaki put kada se naredba izvrši. Da biste to izbjegli, umjesto toga upotrijebite >> >> - on dodaje izlaz postojećoj datoteci.

Što ako Cron ne radi?

Može se dogoditi da ste dodali neke zadatke, provjerili zapisnike sustava i ustanovili da se ne izvršavaju kako bi trebali. Evo nekih stvari koje biste trebali uzeti u obzir - i budite oprezni - kada pokušavate riješiti problem.

Radi li cron usluga?

Kao što znate, cron demon trebao bi raditi u pozadini. Uvjerite se da je to zaista tako. Usluga se naziva crond ili samo cron.

Za distribucije koje koriste systemd:

systemctl status cron

Za distribucije pomoću programa Upstart:

service cron status

Ako vaša distribucija koristi 'stari' pristup System V init, navedite sve usluge sa:

kako igrati Windows 98 igre na Windows 10
initctl list

i provjerite je li na popisu cron.

Smijete li uopće imati datoteku crontab?

Provjeri svoj

/etc

mapa za datoteke s imenom

cron.allow

i

cron.deny

. Na Ubuntuu niti jedno niti drugo ne bi trebalo postojati, što znači da je svim korisnicima dopušteno upravljati cron poslovima. Međutim, ako postoji a

kako gledati redovan tv na roku
cron.allow

datoteku, mora sadržavati vaše korisničko ime. Nasuprot tome, ako je

cron.deny

datoteka postoji, vaše korisničko ime ne bi trebalo biti u njoj. Napuštajući

cron.deny

prazna datoteka znači da samo root i korisnici navedeni u

cron.allow

može imati datoteke crontab.

Jesu li vaše varijable pravilno postavljene?

Crontab automatski postavlja varijablu SHELL na

/bin/sh

. Međutim, ako vaša ljuska po izboru je riba ili bash, trebali biste promijeniti varijablu SHELL

. Isto tako, varijabla PATH prema zadanim postavkama sadrži samo nekoliko direktorija. Ovdje crontab traži Linux naredbe. Ako se vaš cron posao ne može pokrenuti, to može biti zato što crontab ne 'vidi' naredbu koju ste koristili. Da biste to izbjegli, dodajte direktorije koji sadrže naredbe u varijablu PATH, odvojene dvotočkama:

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

Ako ovo ne želite uređivati ​​u svom crontabu, možete definirati ove varijable u skripti koju želite pokrenuti kao cron posao.

Je li vaše formatiranje crontaba točno?

Crontab sintaksa nije baš glatka. Čak i ako to provjerite pomoću prethodno spomenutih mrežnih alata, manja pogreška mogla bi spriječiti cron u izvršavanju vaših poslova. Budite oprezni:

  • dodajte prazan redak na kraj datoteke crontab
  • izbjegnite znak % obrnutom kosom crtom ako vaša naredba to uključuje
  • pišite komentare kao zasebne retke koji počinju s #. Nemojte pisati komentare u isti redak kao varijable okruženja ili pored naredbi cron poslova.

Morate li zaista koristiti terminal?

Apsolutno ne. Korisnici KDE -a mogu zakazati cron poslove s KCronom, kojem je dostupan iz Postavke sustava> Planer zadataka modul. S jednostavnim sučeljem koje vam omogućuje da odaberete i prilagodite sve u samo nekoliko klikova mišem, KCron je zadovoljstvo koristiti.

Ako više volite GNOME, onda GNOME Raspored za tebe je. Pristup je sličan, iako je sučelje, očekivano, malo drugačije. Nudi napredni način rada za sitne izmjene i dolazi s aplikacijom na ploči iz koje možete izravno upravljati zadacima.

Trebali biste biti svjesni drugih rješenja, poput Crontab-UI i Minikron . Pogodniji su za korisnike koji upravljaju s više strojeva i obavljaju cron poslove, a jedna od njihovih najljepših značajki je sučelje na webu.

Postoje li Cron alternative?

Iako je cron prilično standardni raspored alata za planiranje zadataka za Linux, zasigurno nije jedini. The na zapovijed savršen je za brze, jednokratne poslove koji se mogu zakazati izravno iz naredbenog retka, bez posebnih konfiguracijskih datoteka. Ako vam treba više, postoji GNUbatch , koji uvodi pojam ovisnosti. Pomoću GNUbatch -a možete postaviti posebne uvjete za svaki posao ili učiniti planirani zadatak ovisnim o prethodnom. Nešto slično se može postići s mjerači vremena sustava . Iako su manje praktični za konfiguriranje od crona, sistemski mjerači vremena mogu se sjetiti je li zadatak propustio svoj raspored dok je računalo bilo isključeno, i pokrenuti ga sljedeći put kada je uključen.

Ovo je nešto što cron ne može učiniti sam. Kao takav, prikladan je za poslužitelje i računala koja su stalno pokrenuta, ali neće izvršavati posao koji je zakazan dok je računalo bilo isključeno. Ovo je gdje anakron dolazi u igru. Tehnički nije 'alternativa' ili zamjena za cron. Umjesto toga, anacron nadopunjuje cron i trebao bi se koristiti zajedno s njim, što je slučaj na mnogim distribucijama Linuxa, uključujući Ubuntu i Ubuntu-temeljene proizvode. Anacron zapisuje kada je zadatak zadnji put izvršen i provjerava postoje li propuštene instance dok je sustav bio isključen. Pokrenut će ih kad ponovno uključite računalo, ali svaki se zadatak može izvršiti samo jednom dnevno.

Neke verzije crona, poput fcrona, prema zadanim postavkama nude anakronove značajke. Napredni korisnici možda bi htjeli pogledati Hcron ili SuperCron , koji donose mnoga poboljšanja osnovnih funkcija crona, ali su i donekle izazovni za upravljanje.

A ti? Kako organizirate svoje digitalne zadatke? Koje zadatke planirate na Linuxu? Podijelite svoje priče i savjete za korištenje crona u komentarima.

Kredit za sliku: tabla rasporeda autor Gonzalo Aragon putem Shutterstocka

Udio Udio Cvrkut E -pošta 12 video stranica koje su bolje od YouTubea

Evo nekoliko alternativnih YouTube stranica za video zapise. Svaki od njih zauzima različitu nišu, ali vrijedi ga dodati u vaše oznake.

Pročitajte Dalje
Povezane teme
  • Linux
  • Linux
O autoru Ivana Isadora Devčić(24 objavljena članka)

Ivana Isadora slobodna je spisateljica i prevoditeljica, ljubiteljica Linuxa i KDE djevojka. Ona podržava i promiče besplatni softver otvorenog koda i uvijek je u potrazi za svježim, inovativnim aplikacijama. Saznajte kako stupiti u kontakt ovdje .

Više od Ivane Isadore Devčić

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu