Denne artikkelen vil forklare planleggingsoppgaver og kjøre skript med jevne mellomrom ved hjelp av cron-jobber.
Hva er Cron?
Cron er et oppgaveplanleggingsprogram som kjører i bakgrunnen som en prosess. Den kan brukes til periodisk å kjøre bestemte jobber som er planlagt ved hjelp av det forhåndsdefinerte settet med regler. Cron er forhåndsinstallert på de fleste Linux-distribusjoner eller tilgjengelig i depotene som skal installeres manuelt.
Cron forhåndsinnstillinger
Cron på Ubuntu kommer med et sett med forhåndsdefinerte planleggere. Du kan sjekke dem ved å kjøre kommandoen nedenfor:
$ ls / etc / cron.*Vanligvis er disse mappene “/ etc / cron.hver time ”,“ / etc / cron.daglig ”,“ / etc / cron.månedlig ”og“ / etc / cron.ukentlig".
Bare legg til dine ønskede skript i en av disse mappene for å kjøre automatiske oppgaver hver time, daglig, månedlig eller ukentlig.
Merk at cron bruker “/ bin / sh” -skall som standard. Hvis du vil bruke “/ bin / bash” som skall i cron-skript, må du bruke “!# / bin / bash ”hashbang øverst i skriptfilen eller definer skallet som“ SHELL = / bin / bash ”-variabel i første linje i et planlagt bash-skript. Overstyring av "SHELL" miljøvariabelen fungerer også for crontab editor redegjort for nedenfor.
Ikke alle systemmiljøvariabler kan være utsatt for cron-jobbene. Så det er generelt lurt å manuelt definere viktige miljøvariabler i et skript planlagt av cron.
Crontab
Crontab lar deg definere dine egne planlagte oppgaver. Du kan bruke den til å konfigurere cron-tidsplaner som er forskjellige fra de fire standard cron-forhåndsinnstillingene som er forklart ovenfor.
For å sette en planlagt oppgave i crontab, start først crontab-editoren ved å bruke kommandoen nedenfor:
$ crontab -eNå på slutten av filen kan du legge til en oppføring i følgende format:
minutt time dag måned ukedag / full / sti / til / skript.shHvor:
- minutt: hvilken som helst verdi i området 0 til 59
- time: hvilken som helst verdi i området 0 til 23, 0 er midnatt
- dag: hvilken som helst verdi i området 1 til 31
- måned: hvilken som helst verdi i området 1 til 12
- ukedag: hvilken som helst verdi i området 0 til 6, hvor 0 er søndag
Crontab-oppføringen nedenfor tar et skjermbilde av skrivebordet og lagrer det i hjemmekatalogen din en gang kl. 15:13 2. mars pluss hver tirsdag i mars kl. 15:13.
13 15 2 3 2 scrotFor å liste opp alle crontab-oppføringer, bruk kommandoen nedenfor:
$ crontab -lFlere eksempler
Cron-oppgaver kan best forklares gjennom eksempler, så nedenfor er noen eksempler som med jevne mellomrom tar skjermbilder av skrivebordet og lagrer dem i hjemmemappen.
Foruten de fem planleggingsvariablene, bruker cron også noen spesielle strenger for å planlegge jobber. Disse strengene er:
- @hourly: jobben kjøres hver time
- @daily / @midnight: jobben kjøres hver dag
- @ ukentlig: jobben går en gang i uken
- @månedlig: jobben går en gang i måneden
- @ årlig / @ årlig: jobben går en gang i året
- @reboot: jobben kjøres hver gang omstart / innlogging
Crontab-oppføringen nedenfor tar skjermbilde en gang ved hver omstart:
@reboot scrotDu kan erstatte “@reboot” med andre spesialstrenger som er nevnt ovenfor.
Ved å bruke en stjerne eller jokertegn i stedet for en av de fem variablene vil jobben gjentas på alle nye forekomster av den variabelen. Oppføringen nedenfor tar et skjermbilde hvert minutt:
* * * * * ScrotHver time:
0 * * * * scrotHver dag klokka 18:00:
0 18 * * * scrotHver måned den 6. klokka 18:00:
0 18 6 * * scrotBruk “/” til å kjøre et skript med et fast periodisk intervall på 30 minutter (kjøres hvert 30. minutt):
* / 30 * * * * scrotDu kan bruke kommaseparerte variabler for å definere gjentatt kjøring av skript med jevne mellomrom. Eksemplet nedenfor tar et skjermbilde av skrivebordet ditt hvert 1., 4. og 5. minutt i en ny time.
1,4,5 * * * * scrotBekrefte Crontab-oppføringer
Det kan være vanskelig å definere crontab-oppføringer, men det er enda vanskeligere å feilsøke dem eller verifisere om de fungerer med riktig tidsstempel. Et alternativ er å bruke en virtuell maskin og logge tidsstempler for et skript som kjører med jevne mellomrom på en cron-jobb ved å inkludere noe som "date" -kommandoen og omdirigere utdata til en tekstfil. En bedre løsning er imidlertid å bruke en av de mange online cron-jobbtestene som er tilgjengelige på nettet. Jeg anbefaler å gi cron tester nettsted tilgjengelig her et forsøk.
Konklusjon
Å kjøre cron-jobber er en utmerket måte å automatisere gjentatte oppgaver, spesielt på servere. Verktøyet er ekstremt kraftig og tilpasses. Det er imidlertid viktig å forsikre deg om at planleggerdefinisjonen din fungerer riktig, spesielt hvis det er oppgavekritiske oppgaver.