Uvod
Obstaja demon v Linuxu, ki se imenuje cron, ki se uporablja za poganjanje procesov v rednih intervalih.
Način, kako to naredi, je, da preverite določene mape v vašem sistemu za zagon skript. Na primer obstaja mapa, imenovana /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly in /etc/cron.monthly. Obstaja tudi datoteka, imenovana / etc / crontab.
Privzeto lahko preprosto postavite skripte v ustrezne mape, da jih lahko redno izvajate.
Na primer odprite okno terminala (s pritiskom na CTRL, ALT in T) in zaženite naslednji ukaz ls :
ls / etc / cron *
Prikazali boste seznam programov ali skriptov, ki se izvajajo urno, dnevno, tedensko in mesečno.
Težave s temi mapami so, da so malo nejasne. Na primer vsak dan pomeni, da se bo skript izvajal enkrat dnevno, vendar nimate nadzora nad trenutkom, v katerem se bo skript izvajal v tem dnevu.
Tukaj prihaja datoteka crontab.
Z urejanjem datoteke crontab lahko dobite skript ali program, ki ga želite izvajati na točen datum in čas, ki ga želite zagnati. Na primer, morda želite varnostno kopirati datoteke vsako noč ob 18.00.
Dovoljenja
Ukaz crontab zahteva, da ima uporabnik dovoljenja za urejanje datoteke crontab. V bistvu obstajata dve datoteki, ki se uporabljajo za upravljanje dovoljenj crontab:
- /etc/cron.allow
- /etc/cron.deny
Če datoteka /etc/cron.allow obstaja, mora biti uporabnik, ki želi urediti datoteko crontab, v tej datoteki. Če datoteka cron.allow ne obstaja, vendar obstaja datoteka /etc/cron.deny, potem uporabnik v tej datoteki ne sme obstajati.
Če obstajata obe datoteki, potem /etc/cron.allow prekliče datoteko /etc/cron.deny.
Če ni nobene datoteke, je odvisno od konfiguracije sistema, ali lahko uporabnik ustvari crontab.
Uporabnik root lahko vedno uredi datoteko crontab. Z ukazom su lahko preklopite na root uporabnika ali ukaz sudo za zagon ukaza crontab.
Urejanje datoteke Crontab
Vsak uporabnik, ki ima dovoljenja, lahko ustvari svojo datoteko crontab. Ukaz cron v bistvu išče obstoj več crontab datotek in teče skozi vse.
Če želite preveriti, ali imate datoteko crontab, zaženite ta ukaz:
crontab -l
Če nimate datoteke crontab, se bo pojavilo sporočilo »ni crontab za
Če želite ustvariti ali urediti datoteko crontab, zaženite naslednji ukaz:
crontab-e
Privzeto, če ni privzetega izbranega urejevalnika, boste morali izbrati privzeti urejevalnik, ki ga želite uporabiti. Osebno rad uporabljam nano, saj je dokaj enostaven za uporabo in teče od terminala.
Datoteka, ki se odpre, ima veliko informacij, ključni del pa je primer tik pred koncem razdelka »Komentarji« (komentarje označujejo vrstice, ki se začnejo z #).
# mh dom mon dow ukaz
0 5 * * 1 tar -zcf /var/backups/home.tgz / home /
Na vsaki vrstici datoteke crontab je na voljo 6 podatkov:
- Minuta dneva, ko naj bi ukaz zažal (m)
- Uro dneva, ko je ukaz za vožnjo (h)
- Dan v mesecu, ko je ukaz, da teče (dom)
- V mesecu, v katerem se bo ukazal (mon)
- Dan v tednu je ukaz za zagon (dow)
- Ukaz
Za vsak element (razen ukaza) lahko določite nadomestni znak. Oglejte si naslednji primer crontab linije:
30 18 * * * tar -zcf /var/backups/home.tgz / home /
Kaj zgornji ukaz pravi je 30 minut, 18 ur in vsak dan, mesec in dan v tednu zaženite ukaz za zip in tar domači imenik v / var / backups mapo.
Da bi dobili ukaz, ki naj teče po 30 minutah vsake ure, lahko zaženem naslednji ukaz:
30 * * * * ukaz
Da bi dobili ukaz za zagon vsako minuto ob 18h, lahko zaženem naslednji ukaz:
* 18 * * * ukaz
Zato morate biti previdni pri nastavljanju ukazov crontab.
Na primer:
* * * 1 * ukaz
Zgornji ukaz bi potekal vsako minuto vsake ure vsak dan vsakega tedna v januarju. Dvomim, da je to tisto, kar želite.
Če želite 1. januarja narediti ukaz ob 5 uri, bi morali v datoteko crontab narediti naslednji ukaz:
0 5 1 1 * ukaz
Kako odstraniti datoteko Crontab
Večino časa ne želite odstraniti datoteke crontab, vendar boste morda želeli odstraniti nekaj vrstic iz datoteke crontab.
Če pa želite odstraniti datoteko crontab uporabnika, zaženite naslednji ukaz:
crontab -r
Varnejši način za to je zagon naslednjega ukaza:
crontab -i
To postavlja vprašanje "ste prepričani?" preden odstranite datoteko crontab.