|
Lucaine publisert en stund siden utmerket opplæring om cron og crontab som jeg synes er verdt å dele. Cron er et slags tilsvar til planlagte oppgaver i Windows, bare at den håndteres fra terminalen. De som foretrekker et visuelt grensesnitt for å oppnå samme mål, kan se dette et annet element. |
Hva er Cron?
Navnet cron kommer fra gresk chronos som betyr "tid". På Unix-operativsystemet er cron en vanlig bakgrunnsprosessbehandling (daemon) som kjører prosesser eller skript med jevne mellomrom (for eksempel hvert minutt, dag, uke eller måned). Prosessene som må kjøres og tidspunktet de må kjøres er spesifisert i crontab-filen.
COMO verk
Cron-demonen starter fra /etc/rc.d/ o /etc/init.d avhengig av fordelingen. Cron løper i bakgrunnen, sjekker crontab-oppgavetabellen hvert minutt / etc / crontab o en / var / spole / cron på jakt etter oppgaver som skal utføres. Som bruker kan vi legge til kommandoer eller skript med oppgaver for å cron for å automatisere noen prosesser. Dette er nyttig for eksempel for å automatisere oppdateringen av et system eller et godt backupsystem.
Hva er Crontab?
Crontab er en enkel tekstfil som lagrer en liste over kommandoer som skal utføres på et tidspunkt spesifisert av brukeren. Crontab vil verifisere datoen og klokkeslettet skriptet eller kommandoen skal utføres, utførelsestillatelsene og det vil gjøre det i bakgrunnen. Hver bruker kan ha sin egen crontab-fil, faktisk / etc / crontab det antas å være rotbrukerens crontab-fil, når vanlige brukere (og til og med root) vil generere sin egen crontab-fil, vil vi bruke crontab-kommandoen.
Crontab er den enkleste måten å administrere cron-oppgaver på flerbruker-systemer, enten som en enkel systembruker eller rotbruker.
Bruke crontab
Vi begynner med et enkelt eksempel.
Vi skal automatisere oppdateringen av et system, for å eliminere det irriterende "Jeg må alltid oppdatere og det liker jeg ikke!"
Først og fremst skal vi lage et manus. Dette skriptet vil bli kalt av cron og vil inneholde alle instruksjonene vi vil at det skal gjøres, derfor er det nødvendig å teste det i flere tilfeller og på flere måter før du inkluderer det i cron, et enkelt oppdateringsskript som dette:
#! / bin / bash #skriptoppdateringseksempel #Velg distribusjonen din # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Fjern # fra distrolinjen. I tilfelle det er Ubuntu / Debian, begynner det med apt-get.
Vi lagrer skriptet som update.sh (f.eks. Skriptkatalog ditt hjem). Vi endrer utførelsestillatelsene for nevnte skript med:
chmod a + x ~ / scripts / update.sh
Vi kjører skriptet et par ganger for å bekrefte at alt går greit, vi endrer det som er nødvendig (det skal ikke inneholde feil, ellers vil cron bare gjenta en feil igjen og igjen). Nå for å legge til oppgaven i crontab.
Legg til oppgaver i crontab
Vi kjører utgaven av crontab med crontab -e, i noen distroer (som Ubuntu) gir det oss muligheten til å velge tekstredigereren vi ønsker, resten vi har igjen med vi. Crontab-filen vil se omtrent slik ut.
# mh dom mon dow brukerkommando
der:
- m tilsvarer det øyeblikket skriptet kjøres, varierer verdien fra 0 til 59
- h det nøyaktige tidspunktet, 24-timersformatet håndteres, verdiene varierer fra 0 til 23, med 0 som 12:00 XNUMX:XNUMX.
- gave refererer til dagen i måneden, for eksempel kan du spesifisere 15 hvis du vil kjøre hver 15. dag
- dow betyr ukedagen, den kan være numerisk (0 til 7, der 0 og 7 er søndag) eller de første 3 bokstavene på dagen: man, ti, ons, torsdag, fre, lørdag, sol.
- bruker definerer brukeren som skal utføre kommandoen, den kan være root eller en annen bruker så lenge de har tillatelse til å utføre skriptet.
- kommando refererer til kommandoen eller den absolutte banen til skriptet som skal utføres, eksempel: /home/usuario/scripts/update.sh, hvis det kaller et skript, må det være kjørbart
For å være tydelig forklarte noen få eksempler på cron-oppgaver:
15 10 * * * bruker /hjem / bruker / skripter / oppdatering.sh
Den kjører update.sh-skriptet klokka 10:15 hver dag
15 22 * * * bruker /hjem / bruker / skripter / oppdatering.sh
Den kjører update.sh-skriptet klokken 10 hver dag
00 10 * * 0 root apt-get -y oppdatering Rotbruker
Den kjører en oppdatering hver søndag klokka 10
45 10 * * sun root apt-get -y oppdatering
Rotbrukeren kjører en oppdatering hver søndag (søn) kl 10:45
30 7 20 11 * bruker /home/usuario/scripts/update.sh
20. november klokken 7:30 kjører brukeren skriptet
30 7 11 11 solbruker /home/usuario/scripts/pastel_con_velitas.sh
11. november klokka 7:30 og det er søndag, vil brukeren feire sysadminen min (det vil si meg)
01 * * * * bruker /home/usuario/scripts/molestorecordatorio.sh
En irriterende påminnelse hvert minutt hver time hver dag (IKKE anbefalt).
De kan fortsatt håndteres spesielle områder:
30 17 * * 1,2,3,4,5
5:30 på ettermiddagen hver dag fra mandag til fredag.
00 12 1,15,28 * *
Klokka 12 hver første, femtende og 28. i hver måned (ideell for lønn)
Hvis dette er forvirrende, må du håndtere crontab spesielle strenger for å definere disse områdene.
@reboot Kjør en gang, ved oppstart
@årlig kjører bare en gang i året: 0 0 1 1 *
@ hvert år det samme som @ årlig
@monthly kjører en gang i måneden, den første dagen: 0 0 1 * *
@weekly Weekly det første minuttet i den første timen i uken. 0 0 * * 0 ″.
@ daglig hver dag, klokken 12:00. 0 0 * * *
@ midnight same as @daily
@hourly i første minutt av hver time: 0 * * * *
Bruken er veldig enkel.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Sist men ikke minst:
Cron jobbadministrasjon
crontab-fil
Erstatt eksisterende crontab-fil med en brukerdefinert fil
crontab -e
Rediger brukerens crontab-fil, hver nye linje vil være en ny crontab-oppgave.
crontab-l
Liste over alle brukerens crontab-oppgaver
crontab -d
Slett brukerens crontab
crontab -c dir
Definerer brukerens crontab-katalog (dette må ha brukerens skrive- og utføre tillatelser)
crontab -u bruker
prefiks for å håndtere crontab av en annen bruker, eksempler:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u bruker
Dette verktøyet, som mange andre, kan sees nærmere og mer detaljert i: