Cron & crontab, objaĆĄnjeno

Lucaine objavio maloprije izvrstan tutorial o cron-u i crontabu koje mislim da je vrijedno podijeliti. Cron je svojevrsni ekvivalent planiranim zadacima u sustavu Windows, samo da se njime rukuje s terminala. Oni koji vole vizualno sučelje da bi postigli isti cilj, mogu to vidjeti drugog članka.

Ć to je cron?

Naziv cron potječe od grčkog chronos ơto znači "vrijeme". U operacijskom sustavu Unix, cron je redoviti upravitelj pozadinskih procesa (demon) koji pokreće procese ili skripte u redovitim intervalima (na primjer, svake minute, dana, tjedna ili mjeseca). Procesi koji se moraju izvrơiti i vrijeme u kojem se moraju izvrơiti navedeni su u datoteci crontab.

Como radovi

Cron demon započinje od /etc/rc.d/ o /etc/init.d ovisno o raspodjeli. Cron radi u pozadini, provjerava tablicu zadataka crontab svake minute / etc / crontab ili u / var / spool / cron u potrazi za zadacima koje treba obaviti. Kao korisnik moĆŸemo dodati naredbe ili skripte sa zadacima u cron kako bismo automatizirali neke procese. Ovo je korisno, na primjer, za automatizaciju aĆŸuriranja sustava ili dobrog sigurnosnog sustava.

Povezani članak:
Vodič: Instalirajte pakete .tar.gz i .tar.bz2

Ć to je Crontab?

Crontab je jednostavna tekstualna datoteka koja pohranjuje popis naredbi koje treba izvrĆĄiti u vrijeme koje je odredio korisnik. Crontab će provjeriti datum i vrijeme kada treba izvrĆĄiti skriptu ili naredbu, dopuĆĄtenja za izvrĆĄenje i to će učiniti u pozadini. Svaki korisnik moĆŸe imati vlastitu crontab datoteku, zapravo / etc / crontab pretpostavlja se da je datoteka root korisnika crontab, kada normalni korisnici (pa čak i root) ĆŸele generirati vlastitu datoteku crontab, tada ćemo upotrijebiti naredbu crontab.

Crontab je najlakơi način upravljanja cron zadacima na viơekorisničkim sustavima, bilo kao jednostavan korisnik sustava ili kao root korisnik.

KoriĆĄtenje crontaba

Počinjemo s jednostavnim primjerom.

Automatizirat ćemo aĆŸuriranje sustava kako bismo uklonili dosadno "Uvijek se moram aĆŸurirati i to mi se ne sviđa!"

kako
Povezani članak:
Naredbe za poznavanje sustava (prepoznavanje hardverskih i nekih softverskih konfiguracija)

Prije svega napravit ćemo scenarij. Ovu će se skriptu pozvati cron i sadrĆŸavat će sve upute koje ĆŸelimo da učini, stoga ju je potrebno testirati u nekoliko slučajeva i na nekoliko načina prije nego ĆĄto je uključite u cron, jednostavnu skriptu za aĆŸuriranje poput ove:

#! / bin / bash # primjer aĆŸuriranja skripte # odaberite distribuciju # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Uklonite # s vaơe distro linije. U slučaju da je Ubuntu / Debian, započinje s apt-get.

Skriptu spremamo kao update.sh (npr. Direktorij skripti u vaĆĄ dom). DopuĆĄtenja za izvrĆĄavanje navedene skripte mijenjamo sa:

chmod a + x ~ / skripte / aĆŸuriranje.sh

IzvrĆĄimo skriptu nekoliko puta kako bismo provjerili radi li sve glatko, modificiramo ono ĆĄto je potrebno (ne smije sadrĆŸavati pogreĆĄke, inače će cron samo ponoviti greĆĄku iznova i iznova). Sada da dodamo zadatak u naĆĄ crontab.

Dodajte zadatke u crontab

Izvedbu crontaba izvrĆĄavamo s crontab -e, u nekim distro-ovima (poput Ubuntu-a) daje nam mogućnost da odaberemo uređivač teksta koji ĆŸelimo, ostalo nam ostaje vi. Datoteka crontab izgledat će otprilike ovako.

# mh korisnička naredba dom mon dow

gdje je:

  • m odgovara minuti izvrĆĄenja skripte, vrijednost se kreće od 0 do 59
  • h točno vrijeme, obrađuje se 24-satni format, vrijednosti se kreću od 0 do 23, 0 je 12:00 ponoći.
  • dar odnosi se na dan u mjesecu, na primjer moĆŸete navesti 15 ako ĆŸelite trčati svakih 15 dana
  • Dow znači dan u tjednu, moĆŸe biti numerički (0 do 7, gdje su 0 i 7 nedjelja) ili prva 3 slova dana na engleskom: ponedjeljak, utorak, srijeda, čet, pet, sub, sunce.
  • korisnik definira korisnika koji će izvrĆĄiti naredbu, moĆŸe biti root ili drugi korisnik sve dok imaju dozvole za izvrĆĄavanje skripte.
  • naredba odnosi se na naredbu ili apsolutni put skripte koja se izvrĆĄava, primjer: /home/usuario/scripts/update.sh, ako zove skriptu, mora biti izvrĆĄna

Da budemo jasni, objaĆĄnjeno je nekoliko primjera cron zadataka:

15 10 * * * korisnik /home/user/scripts/update.sh

Pokretat će skriptu update.sh svaki dan u 10:15

15 22 * * * korisnik /home/user/scripts/update.sh

Pokretat će skriptu update.sh svaki dan u 10:15

00 10 * * 0 root apt-get -y update Korijenski korisnik

AĆŸurirat će se svake nedjelje u 10:00 sati

45 10 * * aĆŸuriranje korijena sunca apt-get -y

Root korisnik će pokretati aĆŸuriranje svake nedjelje (nedjelja) u 10:45

30 7 20 11 * korisnik /home/usuario/scripts/updata.sh

20. studenog u 7:30 korisnik će pokrenuti skriptu

30 7 11 11 korisnik sunca /home/usuario/scripts/pastel_con_velitas.sh

11. studenog u 7:30 i to je nedjelja, korisnik će proslaviti svog sysadmina (to jest, mene)

01 * * * * korisnik /home/usuario/scripts/molestorecordatorio.sh

Dosadan podsjetnik svake minute svakog sata svakog dana (NE preporučuje se).

JoĆĄ uvijek se njima moĆŸe rukovati posebni rasponi:

30 17 * * 1,2,3,4,5

U 5:30 popodne svaki dan od ponedjeljka do petka.

00 12 1,15,28 * *

U 12 sati svakog prvog, petnaestog i 28. u mjesecu (idealno za obračun plaća)

Ako je ovo zbunjujuće, crontab rukuje posebni nizovi za definiranje ovih raspona.

@reboot Pokreni jednom prilikom pokretanja
@yearly radi samo jednom godiĆĄnje: 0 0 1 1 *
@ godiĆĄnje isto kao i @godine
@monthly radi jednom mjesečno, prvi dan: 0 0 1 * *
@weekly Weekly prva minuta prvog sata u tjednu. 0 0 * * 0 ″.
@daily svakodnevno, u 12:00 A.M. 0 0 * * *
@ponoć isto kao i @daily
@hourly u prvoj minuti svakog sata: 0 * * * *

Njegova je upotreba vrlo jednostavna.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

Posljednje, ali ne najmanje vaĆŸno:

Cron upravljanje poslom

crontab datoteku

Zamijenite postojeću datoteku crontab korisničkom datotekom

crontab -e

Uredite korisničku crontab datoteku, svaki novi redak bit će novi crontab zadatak.

crontab -l

Navedite sve korisnikove zadaće crontab

crontab -d

IzbriĆĄite korisnikov crontab

crontab -c red

Definira korisnikov direktorij crontab (on mora imati korisnikova dopuĆĄtenja za pisanje i izvrĆĄavanje)

korisnik crontab -u

prefiks za obradu crontaba drugog korisnika, primjeri:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u korisnik

Ovaj se alat, kao i mnogi drugi, moĆŸe dublje i detaljnije vidjeti u:

Hvala Lucain!