Kako zakazati zadatke u Linuxu pomoću Cron-a i Crontaba

  • Peter Holmes
  • 0
  • 1742
  • 219
Oglas

Jeste li znali da Blade Runner postavlja se 2019.? To je za tri godine! Ne spominjati Povratak u budućnost 2, gdje putuju naprijed u 2015. Ipak, mi nemamo leteće automobile i među nama nema replikanata (koliko znam).

Lako je osjetiti se razočaran trenutnom tehnologijom ako je uspoređujemo s izmišljenim prikazima budućnosti. Ipak, ovih dana naši telefoni, računala, pa čak i kuće, mogu učiniti nevjerojatne stvari 5 DIY projekata kućne automatizacije za početak svog pametnog doma 5 DIY projekata kućne automatizacije za početak sa vašim pametnim domom Kada je u pitanju stvaranje pametnih domova, većina ljudi samo ne znam odakle započeti. Evo pet osnovnih projekata za pametne početnike za početnike koje trenutno možete graditi. , Sposobnost automatizacije zadataka jedna je od njih.

Svaki korisnik Linuxa može imati koristi od zadataka zakazivanja, bilo da su povezani sa sustavom (poput čišćenja starih dnevnika i ažuriranja paketa. Ažuriranje jedne ili svih aplikacija na Linuxu u sekundi Kako ažurirati jednu ili sve aplikacije na Linuxu u nekoliko sekundi Linux terminal olakšava ažuriranje jedne aplikacije na računalu ili primjenu svih dostupnih ažuriranja odjednom. Evo kako.) ili usluživanje korisnika (provjeravanje e-pošte, preuzimanje podcasta ...). Korisnici Windowsa imali su Task Scheduler 4 dosadne zadatke koje možete automatizirati pomoću programa Windows Task Scheduler 4 Dosadne zadatke možete automatizirati s Windows Schedulerovim zadatkom Vrijeme vam je previše dragocjeno da biste ga trošili uz ponavljajuće zadatke. Dopustite da vam pokažemo kako automatizirati i zakazati zadatke. Imamo i nekoliko sjajnih primjera. od Windows 95. Uslužni program koji radi isti posao na Linuxu naziva se cron, a ovdje ćemo objasniti kako ga koristiti.

Što je Cron?

Cron je sistemska usluga koja se pokreće u pozadini, provjerava planirane zadatke i izvršava ih ako ih pronađe. Zadaci - također pozvani “cron poslovi 5 Ideje za početnik Linuxa za postavljanje Cron Jobs & Shell skripti 5 Ideje za početnik Linux-a za skripte Cron Jobs & Shell skripte S bash skriptom možete u jednom brzom hodu obaviti složeni niz zadataka, tako da je izvrstan za složene i ponavljajuće potrebe. Odličan je način upoznavanja terminala. ” - definirani su u posebnim konfiguracijskim datotekama (crontabs), koje cron skeniraju svake minute. Nekoliko verzija cron-a može se naći na različitim Linux distribucijama. Na primjer, Fedora vilica za krune naziva se cronie, a tu su i fcron, bcron i dcron. Neki imaju dodatne značajke, dok su drugi više usredotočeni na sigurnost, ali sve se temelji na istoj ideji.

Ovaj je vodič napisan za vixie-cron, koja je najrasprostranjenija verzija cron-a i ona koju ćete naći na Ubuntu-u i njegovim derivatima. Iako se većina uputa odnosi i na druge implementacije cron-a, mogu postojati manje razlike, stoga provjerite njihove priručnike ako se odlučite za prebacivanje.

Što je Crontab?

Ako se ozbiljno bavite svojim vremenom, vjerojatno imate neki kalendar. Organizirajte svoje vrijeme pomoću ove 4 Linux kalendarske aplikacije Organizirajte svoje vrijeme s ove 4 aplikacije Linux kalendara. Ima li smisla i dalje koristiti aplikaciju za stolni kalendar? To mislimo, posebno kako bismo omogućili pristup događajima na bilo kojem sinkroniziranom uređaju. Ove su Linux aplikacije za kalendar posebno korisne. - aplikacija ili barem komad papira. Crontab je vrlo sličan kalendaru vašeg računala. Sadrži podatke o planiranim zadacima, upućujući cronu koje naredbe da se pokrene u koje vrijeme.

Zapravo je nekoliko crontabova u vašem sustavu. Svaki korisnik ima svoj crontab, uključujući root (administrator). Krontati korisnika pohranjeni su u / Var / kalem / Cron / crontabs /. krontab -l naredba će popisati datoteku crontab za trenutnog korisnika. Možete provjeriti korijenski krontab pomoću sudo crontab -l.

Uz to, postoji i datoteka sustava crontab / Etc / crontab koji se koristi za zadatke u cijelom sustavu. Obično imaju oblik izvršnih skripti u vlasništvu korijena /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, i /etc/cron.monthly/ mape, a na nekim distribucijama /etc/cron.d/ mapu. Općenito govoreći, ne biste se trebali baviti tim zadacima, jer ih većinu stvaraju automatski instalirane aplikacije.

Kako zakazati zadatke s Cron

Zvuči jednostavno: zakazati zadatke, samo ih dodajte u svoj krontab. Budući da je crontab posebna konfiguracijska datoteka, ne preporučuje se ručno uređivanje. Umjesto toga, koristite crontab -e naredba. Za uređivanje korijenskih ili drugih korisnika korisnika, pokrenite naredbu s administrativnim povlasticama i dodajte njihovo korisničko ime nakon opcije -u:

sudo crontab -u korijen -e
sudo crontab -u korisničko ime -e

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

Drugi dio datoteke je stvarni “raspored” s planiranim zadacima. Svaki zadatak zauzima redak (redak) u tablici s stupcima koji predstavljaju sljedeće vrijednosti:

Da biste uspješno zakazali zadatke, morate znati malo o sintaksi crontaba:

  • Brojevi trebaju biti cijeli brojevi (cijeli brojevi), a zvjezdicu (*) možete koristiti u bilo kojem stupcu kao zamjenski znak, što znači “svake minute / dan / mjesec… ”.
  • U “Dan mjeseca” pazite da ne postavite datum koji se ne događa u mjesecu navedenom u “Mjesec” stupac (na primjer, 30. veljače).
  • Oba “Mjesec” i “Dan u tjednu” stupci prihvaćaju kratka imena mjesecima, odnosno danima, i oni su neosjetljivi.
  • U “Dan u tjednu” stupac, i 0 i 7 stoje za nedjelju. “Sat” stupac zahtijeva “vojnog vremena” (24-satni) format, ali ne možete koristiti broj 24 - umjesto toga, 0 označava 12 sati. To je zato što vrijednosti za minutu, sat i dan u tjednu počinju sa 0 umjesto 1.
  • Sekunde nisu podržane, tako da ne možete zakazati zadatak u određenoj sekundi.

Ono što možete učiniti je zakazati inkluzivne vremenske raspone pomoću crtica (14-22 ispod “Sati” zadatak će se izvoditi kontinuirano od 14:00. do 22:00) ili pokrenite pojedinačni zadatak nekoliko puta definiranjem popisa odvojenog zarezom (ispod 1,3,5 “Dan u tjednu” izvršiće zadatak u ponedjeljak, srijedu i petak).

U međuvremenu, vrijednosti koraka predstavljene su kosom naprijed (/), a one ukazuju na količinu preskoka unutar raspona; na primjer, 3-20 / 3 ispod “Sati” zadatak će obaviti svaka tri sata od 15:00 do 20:00. Ovo je korisno kada želite ponavljati zadatke svakih X sati, jer možete kombinirati zvjezdicu i korak (* / X). Možete kombinirati raspone sa popisima i korake s rasponima sve dok koristite brojeve. Drugim riječima, kombinacije poput “Jan-Mar” ili “Uto, pet-ned” Nisu dopusteni.

Alternativno, umjesto da postavite vrijednost za svaki stupac, na početku retka možete jednostavno napisati @weekly, @yearly, @monthly, @daily ili @hourly, nakon čega slijedi naredba. Ovako raspoređeni, zadaci će se izvoditi u prvoj mogućoj instanci, pa će se @weekly prvi dan u tjednu izvoditi u ponoć. Ako želite pokrenuti zadatak odmah kad se sustav (ponovno) pokrene, upotrijebite naredbu @reboot.

U ovom primjeru zakazali smo rezervaciju svaki dan u 08:20 i 20:20. Pozadina se automatski mijenja svaka tri dana u 19:00, a skripta će provjeriti nove podcaste. 10 najboljih aplikacija za upravljanje podcastima na Linuxu. 10 najboljih aplikacija za upravljanje podcastima na Linuxu nema sjajan izbor podcast klijenata, ali ne brinite - gotovo svaki moderni glazbeni uređaj za Linux može poslužiti kao potkač. Pogledajmo opcije. svaki ponedjeljak u 10:20 i 20:20. Podsjećanje na rođendan postavlja se za 25. ožujka i traje svakih 30 minuta unutar određenog vremenskog okvira. Konačno, skripta provjerava e-poštu svakih 15 minuta od 8 do 20, ali samo radnim danom. Slobodno možete organizirati svoj rubnik s razmacima i tabulatorima između stupaca, ali ne unutar njih (ne stavljajte razmake između zareza, crtica i crtača).

Ako vam sve ovo zvuči previše komplicirano, ne brinite - uvijek se možete osloniti na Internet. Alati poput Crontab Generatora, Crontab.guru i Corntaba pomažu vam u kreiranju poslova cron bez poznavanja sintakse crontaba. Oni vam pokazuju kada će se sljedeći posao pokrenuti i daju predloške za najčešće korištene izraze. Crontab.guru je najbolji u grupi jer vam omogućuje live-test crontab sintaksu, tako da možete odmah vidjeti kako će vaše promjene utjecati na raspored.

Kako provjeriti izvršavaju li se poslovi tvrtke Cron

Cron bi trebao raditi tiho u pozadini i pustiti vas da nesmetano radite dok se brine za svoje zadatke. Ali kako možete biti sigurni da to stvarno radi?

Cron ima ugrađenu značajku obavijesti putem e-pošte, ali to zahtijeva postavljanje barem jednostavnog lokalnog poslužitelja pošte. Kako radi poslužitelj e-pošte? [Objasnio tehnologiju] Kako funkcionira poslužitelj e-pošte? [Objasnjena tehnologija] Iza svake e-pošte stoji moćan motor koji se zove poslužitelj e-pošte koji gura e-poštu putem interneta. , Mnogi kućni korisnici to nisu spremni konfigurirati, a nema ih mnogo distribucija prema zadanom obliku (na primjer, Ubuntu ne). Najbrži način provjere na cron je skeniranje zapisnika sustava s ovom naredbom:

mačka / var / log / syslog | grep -i cron

Opcija -i čini naš slučaj neosjetljivim. Moguće je da će cron negdje imati svoju datoteku dnevnika / Var / log /, pa potražite tamo ako ova naredba ne daje korisne rezultate.

Ako želite spremiti izlaz određenog posla iz cron, možete ga preusmjeriti u datoteku. Unesite stazu i naziv datoteke u posljednjem stupcu vašeg crontaba, nakon naredbe koju želite pokrenuti:

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

Upotreba jednog simbola> prebrisati će datoteku svaki put kad se naredba izvrši. Da biste to izbjegli, umjesto toga koristite >> - dodava izlaz postojećoj datoteci.

Što ako Cron ne radi?

Može se dogoditi da ste dodali neke zadatke, provjerili sistemske zapise i otkrili da ne izvršavaju kako bi trebali. Evo nekoliko stvari koje biste trebali razmotriti - i biti oprezni - kada pokušavate riješiti problem.

Je li pokrenuta usluga cron?

Kao što znate, demon cron trebao bi biti u pozadini. Provjerite je li to zaista tako. Usluga se naziva ili crond ili samo cron.

Za distribucije koje koriste systemd:

systemctl status cron

Za distribucije koje koriste Upstart:

status cron usluge

Ako vaša distribucija koristi “star” System V init pristup, popis svih usluga s:

initctl popis

i vidjeti ako je cron naveden.

Je li vam uopće dopušteno imati datoteku s crontabom?

Provjeri svoj / etc mapa za datoteke s nazivima cron.allow i cron.deny. Na Ubuntuu niti to ne bi trebalo postojati, što znači da je svim korisnicima dopušteno upravljanje cron poslovima. Međutim, ako postoji cron.allow datoteka, mora sadržavati vaše korisničko ime. Obrnuto, ako 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 su samo korijen i korisnici navedeni u cron.allow mogu imati datoteke crontaba.

Jesu li vaše varijable ispravno postavljene?

Crontab automatski postavlja vašu SHELL varijablu na / Bin / sh. Međutim, ako je vaša ljuska izbora riba 7 razloga. Zašto biste trebali instalirati riblju školjku 7 razloga zašto biste trebali instalirati školjku ribe Ne sviđa vam se kako funkcioniše vaš Linux terminal? Zašto ne instalirati novu ljusku? Jedna takva ljuska je riba, koja unosi značajke koje su trebale postati uobičajena, ali nisu. Pogledajmo. ili bash, trebali biste promijeniti varijantu SHELL. Isto tako, varijabla PATH sadrži samo nekoliko direktorija prema zadanim postavkama. Ovdje crontab traži Linux naredbe. Ako se vaš posao cron ne uspije pokrenuti, to može biti zbog toga što ga crontab ne radi “vidjeti” naredbu koju ste koristili. Da biste to izbjegli, dodajte mape koje sadrže naredbe u varijablu PATH odvojene kolonama:

PUT = / opt / MyApp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Ako to ne želite urediti u svom crontabu, ove varijable možete definirati u skripti koju želite pokrenuti kao cron posao..

Je li vaše formatiranje crontaba točno??

Crontab sintaksa nije baš glatka plovidba. Čak i ako to potvrdite prethodno navedenim internetskim alatima, manja greška može i dalje spriječiti da Cron izvršava vaše poslove. Pazite:

  • dodajte prazan redak na kraju datoteke crontaba
  • pobjeći znak% s kosom kosom crtama ako je uključuje i vaša naredba
  • napišite komentare kao zasebne retke počevši od #. Ne upisujte komentare u isti redak kao varijable okoline ili uz naredbe cron poslova.

Morate li doista koristiti terminal?

Apsolutno ne. Korisnici KDE-a mogu zakazati poslove cron-a s KCronom, koji je dostupan na Postavke sustava> Planer zadataka modul. S jednostavnim sučeljem koje vam omogućuje odabir i podešavanje svega u samo nekoliko klikova mišem, KCron je zadovoljstvo koristiti.

Ako više volite GNOME, onda je GNOME raspored za vas. Pristup je sličan, iako je sučelje, očekivano, malo drugačije. Nudi napredni način finozrnate modifikacije, a dolazi s appletom na ploči s kojeg možete izravno upravljati zadacima.

Trebali biste biti svjesni drugih rješenja, poput Crontab-UI i Minicrona. Prikladniji su za korisnike koji upravljaju višestrukim strojevima i poslovima cron-a, a jedna od njihovih zgodnijih karakteristika je internetsko sučelje.

Postoje li alternative za Cron?

Iako je cron poprilično standardni planer zadataka za Linux raspored i automatizirane zadatke u Linuxu s rasporedom rasporeda Gnomea i automatizacijom zadataka u Linuxu s rasporedom Gnomea, to sigurno nije jedini. Naredba at je savršena za brze jednokratne zadatke koji se mogu zakazati izravno iz naredbenog retka, bez posebnih datoteka konfiguracije. Ako vam treba više, tu je GNUbatch, koji uvodi pojam ovisnosti. Pomoću GNUbatch možete postaviti posebne uvjete za svaki posao ili napraviti zakazani zadatak ovisno o prethodnom. Nešto slično se može postići sistemskim tajmerima. Iako je manje praktično za konfiguriranje od cron-a, sistematski timeri mogu se sjetiti je li neki zadatak propustio njegov raspored dok je računalo isključeno i pokrenuti ga sljedeći put kada je uključen.

To je nešto što cron ne može sam. Kao takav, pogodan je za poslužitelje i računala koja se stalno pokreću, ali neće izvršiti posao koji je bio zakazan dok je računalo isključeno. Tu se igra anakrona. Tehnički nije “alternativa” ili zamjena za cron. Umjesto toga, anacron nadopunjava cron i trebao bi se koristiti zajedno s njim, što je slučaj u mnogim Linux distribucijama, uključujući Ubuntu i proizvode temeljene na Ubuntuu. Anacron se prijavi kad je zadatak zadnji put izvršen i provjerava ima li propustanih slučajeva dok je sustav bio isključen. Pokreće ih kada ponovno uključite računalo, ali svaki se zadatak može izvršiti samo jednom dnevno.

Neke verzije crona, poput fcrona, nude anacron značajke prema zadanim postavkama. Napredni korisnici možda žele pogledati Hcron ili SuperCron, koji donose mnoga poboljšanja u osnovnim funkcijama cron-a, ali su i pomalo izazovni za upravljanje..

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

Kreditna slika: raspored ploča od strane Gonzala Aragona preko Shutterstocka




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.