|
Lucaine han offentliggjorde et stykke tid siden fremragende tutorial om cron og crontab som jeg synes er værd at dele. Cron svarer til en plan svarende til planlagte opgaver i Windows, kun at det håndteres fra terminalen. De, der foretrækker en visuel grænseflade for at nå det samme mål, kan se dette en anden artikel. |
Hvad er Cron?
Navnet cron kommer fra den græske chronos, hvilket betyder "tid". I Unix-operativsystemet er cron en regelmæssig baggrundsprocessmanager (dæmon), der kører processer eller scripts med jævne mellemrum (for eksempel hvert minut, dag, uge eller måned). De processer, der skal udføres, og det tidspunkt, hvor de skal udføres, er specificeret i crontab-filen.
Como værker
Cron-dæmonen starter fra /etc/rc.d/ o /etc/init.d afhængigt af fordelingen. Cron løber i baggrunden, kontrollerer crontab-opgavetabellen hvert minut / Etc / crontab eller / var / spole / cron på jagt efter opgaver, der skal udføres. Som bruger kan vi tilføje kommandoer eller scripts med opgaver til cron for at automatisere nogle processer. Dette er f.eks. Nyttigt at automatisere opdateringen af et system eller et godt backupsystem.
Hvad er Crontab?
Crontab er en simpel tekstfil, der gemmer en liste over kommandoer, der skal udføres på et tidspunkt, der er angivet af brugeren. Crontab vil kontrollere datoen og klokkeslættet, som scriptet eller kommandoen skal udføres, udførelsestilladelserne, og det gør det i baggrunden. Hver bruger kan have deres egen crontab-fil, faktisk / Etc / crontab det antages at være rodbrugerens crontab-fil, når normale brugere (og endda root) vil generere deres egen crontab-fil, så bruger vi kommandoen crontab.
Crontab er den nemmeste måde at styre cron-opgaver på multi-user-systemer på, enten som en simpel systembruger eller root-bruger.
Brug af crontab
Vi starter med et simpelt eksempel.
Vi vil automatisere opdateringen af et system for at fjerne det irriterende ved "Jeg skal altid opdatere, og det kan jeg ikke lide!"
Først og fremmest laver vi et script. Dette script kaldes af cron og indeholder alle de instruktioner, vi vil have det til at gøre, derfor er det nødvendigt at teste det i flere tilfælde og på flere måder, før det inkluderes i cron, et simpelt opdateringsscript som dette:
#! / bin / bash #script-opdateringseksempel #Vælg din distribution # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Fjern # fra din distrolinje. Hvis det er Ubuntu / Debian, starter det med apt-get.
Vi gemmer scriptet som update.sh (f.eks. Scriptsmappe dit hjem). Vi ændrer udførelsestilladelserne for det nævnte script med:
chmod a + x ~ / scripts / update.sh
Vi kører scriptet et par gange for at kontrollere, at alt kører problemfrit, vi ændrer det, der er nødvendigt (det må ikke indeholde fejl, hvis ikke cron kun gentager en fejl igen og igen). Nu for at tilføje opgaven til vores crontab.
Føj opgaver til crontab
Vi udfører udgaven af crontab med crontab -e, i nogle distroer (som f.eks. Ubuntu) giver det os mulighed for at vælge den teksteditor, vi ønsker, resten har vi tilbage med vi. Crontab-filen vil se sådan ud.
# mh dom mon dow brugerkommando
hvor:
- m svarer til det øjeblik scriptet udføres, værdien varierer fra 0 til 59
- h det nøjagtige tidspunkt, 24-timers format håndteres, værdierne varierer fra 0 til 23, hvor 0 er 12:00 midnat.
- gave refererer til månedsdagen, for eksempel kan du angive 15, hvis du vil køre hver 15. dag
- dow betyder ugedagen, det kan være numerisk (0 til 7, hvor 0 og 7 er søndag) eller de første 3 bogstaver på dagen på engelsk: man, ti, ons, tors, fre, lør, sol.
- bruger definerer den bruger, der udfører kommandoen, den kan være root eller en anden bruger, så længe de har tilladelse til at udføre scriptet.
- kommando henviser til kommandoen eller den absolutte sti til det script, der skal udføres, eksempel: /home/usuario/scripts/update.sh, hvis det kalder et script, skal det være eksekverbart
For at være klar et par eksempler på cron-opgaver forklaret:
15 10 * * * bruger /home/bruger/scripts/update.sh
Det kører scriptet update.sh kl. 10:15 hver dag
15 22 * * * bruger /home/bruger/scripts/update.sh
Det kører scriptet update.sh kl. 10:15 hver dag
00 10 * * 0 root apt-get -y opdatering Root user
Den kører en opdatering hver søndag kl. 10
45 10 * * sun root apt-get -y opdatering
Rodbrugeren kører en opdatering hver søndag (søn) kl. 10:45
30 7 20 11 * bruger /home/usuario/scripts/update.sh
Den 20. november kl. 7:30 kører brugeren scriptet
30 7 11 11 solbruger /home/usuario/scripts/pastel_con_velitas.sh
Den 11. november kl. 7:30, og det er søndag, fejrer brugeren sin sysadmin (det vil sige mig)
01 * * * * bruger /home/usuario/scripts/molestorecordatorio.sh
En irriterende påmindelse hvert minut hver time hver dag (IKKE anbefales).
De kan stadig håndteres specielle intervaller:
30 17 * * 1,2,3,4,5
5:30 om eftermiddagen hver dag fra mandag til fredag.
00 12 1,15,28 * *
Kl. 12 hver første, femtende og 28. i hver måned (ideel til lønningsliste)
Hvis dette er forvirrende, skal du håndtere crontab specielle strenge til at definere disse intervaller.
@reboot Kør én gang ved opstart
@yearly kører kun en gang om året: 0 0 1 1 *
@ hvert år det samme som @ årligt
@monthly kører en gang om måneden, den første dag: 0 0 1 * *
@ ugentlig ugentlig det første minut i den første times uge. 0 0 * * 0 ″.
@ dagligt dagligt kl. 12:00 0 0 * * *
@ midnat samme som @daily
@hourly i det første minut i hver time: 0 * * * *
Dens anvendelse er meget enkel.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Sidst men ikke mindst:
Cron jobledelse
crontab-fil
Udskift den eksisterende crontab-fil med en brugerdefineret fil
crontab -e
Rediger brugerens crontab-fil, hver nye linje bliver en ny crontab-opgave.
crontab-l
Liste over alle brugerens crontab-opgaver
crontab -d
Slet brugerens crontab
crontab -c dir
Definerer brugerens crontab-bibliotek (dette skal have brugerens skrive- og eksekveringstilladelser)
crontab -u bruger
præfiks til at håndtere en anden brugers crontab, eksempler:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u bruger
Dette værktøj kan, som mange andre, ses mere detaljeret og mere detaljeret i: