5 Crontab -eksempler for å hjelpe deg med å automatisere Linux -oppgaver

5 Crontab -eksempler for å hjelpe deg med å automatisere Linux -oppgaver

Cron -programmet automatiserer utførelsen av andre programmer på Linux. Cron er en demon som kjører kontinuerlig og starter andre programmer i henhold til en gitt tidsplan. Flere forskjellige filer definerer denne timeplanen. De er individuelt kjent som crontabs.





Cron kan planlegge enhver Unix -kommando eller oppgave. Noen ganger vil du jobbe med en enkel kommando. Andre ganger må du skrive et manus for å utføre hele oppgaven. Cron fungerer fint med begge tilnærmingene. Den støtter også kompliserte planleggingsregler og fleksible måter å håndtere scriptutdataene på.





Enten du utfører enkle brukeroppgaver eller fullstendig systemadministrasjon, er det et must å forstå hvordan cron fungerer ved hjelp av praktiske eksempler.





1. Rydde opp /tmp ved hjelp av en systembred krontab

De /tmp katalogen er et midlertidig sted for generell bruk av ethvert program eller bruker av systemet. Mange Unix -systemer vil slette gamle filer i /tmp -katalogen under oppstart. Andre planlegger denne operasjonen, ganske ofte ved hjelp av cron.

Men hvis du vil ha tilpasset kontroll over denne prosessen, eller vil bruke den på en annen katalog, er det enkelt å sette opp en rask cron -oppgave.



Her er en måte å rydde opp /tmp eller en annen katalog etter eget valg:

1 3 * * * /usr/bin/find /tmp -type f -atime +10 -delete

Et minutt over tre, hver dag, vil cron utføre denne kommandoen. Det bruker finn -kommandoen for å søke etter filer i /tmp -katalogen. Det filtrerer bort alt annet enn normale filer som sist ble endret for minst 10 dager siden. Den fjerner deretter alle slike filer den finner.





Du bør legge til en kommando som denne i en global crontab som f.eks /etc/crontab eller root's crontab bruker sudo crontab -e . Kommandoen må kjøres som root, slik at den kan slette filer i /tmp uavhengig av hvem som eier dem.

Vær oppmerksom på at dette eksemplet spesifiserer hele banen til finn -kommandoen. Cron bruker en grunnleggende PATH -innstilling for å søke etter kjørbare filer, så hvis kommandoen er på et standard sted (f.eks /usr/bin ), dette er egentlig ikke nødvendig. Du kan angi en alternativ PATH i selve krontabellen hvis du foretrekker den tilnærmingen. Men å bruke en fullstendig bane for kommandoer er litt mer motstandsdyktig.





Hvis du jobber med et prosjekt som skriver logger eller lagrer bufrede data, kan denne typen tilnærming være avgjørende hvis du sletter filer for å slette diskplass. Selv om eksemplet ovenfor er en rask og skitten tilnærming, bør du bruke en kommando som tmpwatch , hvis den er tilgjengelig.

2. Database sikkerhetskopier to ganger daglig

Fra nå av skal vi fokusere på brukerspesifikke oppgaver som du kan administrere via din lokale crontab. Du kan redigere den nåværende brukerens crontab ved å bruke følgende kommando:

crontab -e

Denne krontabelen bør inneholde oppgaver som er spesifikke for brukerkontoen din. Tenk deg at du jobber med et prosjekt som involverer å fylle ut en MySQL -database. Du kan bruke mysqldump verktøy for å lage en SQL -dump av en hel database. Ved å omdirigere utdataene, kan du ha enkle, planlagte databasesikkerhetskopier.

30 4 * * * /usr/local/mysql/bin/mysqldump --login-path=local --databases albums > /tmp/album-db.$(date +\%s).sql

Som standard sender cron utdata (inkludert feil) via e -post til brukeren crontab -filen tilhører. Men du kan omdirigere utdata på samme måte som du ville gjort fra en kommandolinje, ved å bruke > filnavn notasjon.

samsung s21 ultra vs iphone 12 pro max

Legg merke til hvordan eksemplet ovenfor bruker kommandosubstitusjon for å bygge filnavnet basert på det nåværende Unix -tidsstempelet. Fordi det % symbolet har en spesiell betydning for cron, må kommandoen unnslippe det med en forrige tilbakeslag.

3. Kontrollere nettstedets oppetid med et tilpasset skript

Du har kanskje lagt merke til at kommandoen i det siste eksemplet var ubehagelig lang. Heldigvis er det ingenting som hindrer deg i å lagre kommandoer i et skript og kjøre skriptet via crontab. Her er et eksempel som kjører et skript hvert minutt:

* * * * * /Users/bobby/bin/site-monitor.sh

Vær oppmerksom på at du i teorien kan bruke HJEM variabel eller tilde -utvidelse for en kortere kommando:

* * * * * ~/bin/site-monitor.sh

Du kan velge å unngå å gjøre det, i tilfelle cron noen gang slutter å støtte det. Det er ingen reell skade ved å bruke hele banen, og den er uten tvil mer lesbar.

Selve skriptet bruker curl -programmet til å hente HTTP -statuskode for en gitt URL. Hvis statusen indikerer noe annet enn suksess, skriver skriptet en melding til utgangen.

Som nevnt tidligere vil cron sende denne utgangen til oss via e -post. Det kan være nyttig å ha kommandoer i cron som ikke gir noen utgang på suksess.

#!/bin/bash
STATUS=`curl -s -o /dev/null -I -w '%{http_code}' http://example.com/`
if [ '$STATUS' != '200' ]
then
echo 'site appears to be down'
fi

4. Diskplassrapporter via e -post

Hvis du vil endre crons standard e -postadferd, kan du bruke MAILTO miljøvariabel. Cron støtter noen få variabler som du kan angi i crontab -filen. Cron bruker deretter disse variablene på miljøet for hver kommando som følger.

For å angi en alternativ mål -e -postadresse, bruk følgende format:

MAILTO=user@example.com

Du må kjøre dette på en maskin som er konfigurert for å sende en ekstern e -post om nødvendig. Her er et eksempel som sender en e -post til en annen bruker på samme maskin. Det går to ganger om dagen, kl. 12.00 og 23.00. De df kommandoen viser ledig diskplass, så denne crontab -oppføringen delegerer oppgaven med å kontrollere at diskplassen ser OK ut:

MAILTO='sarah'
0 12,23 * * * /bin/df -h

Den resulterende e -posten vil se slik ut:

Vær oppmerksom på at cron legger til sine egne tilpassede e -postoverskrifter. Disse kan være nyttige for feilsøking. Du kan også deaktivere crons standard e -postadferd ved å bruke en tom streng:

MAILTO=''

5. Send en melding på bestemte tidspunkter

De andre eksemplene bruker ganske enkel planlegging, men cron støtter en kraftig syntaks for tidsspesifikasjoner. Den håndterer ikke bare eksakte treff, men også:

  • Flere verdier atskilt med komma ( , )
  • Områder spesifisert med bindestrek ( - )
  • Trinnverdier etter en skråstrek fremover ( / )

Så hvis du for eksempel vil sende en melding til alle påloggede brukere, to ganger i timen i arbeidstiden, men bare hver tredje time, vil det være tilstrekkelig med følgende:

0 15,45 9-17/3 ? * * * echo 'Enjoy your work!' | wall

Denne kommandoen vil utføres kl. 15 og 45 minutter over timen, hver tredje time i timene fra 9 til 17. Veggkommandoen sender en melding til hver pålogget terminalbruker.

Du kan til og med oppdage at cron tilbyr mer fleksibel planlegging enn kalenderappen din. Noen varianter lar deg angi kommandoer som skal utføres den andre fredagen i måneden eller den nærmeste ukedagen til en bestemt dato.

Cron kan automatisere mange typer Linux -oppgaver

Dette er et lite utvalg av typen oppgaver som cron kan hjelpe deg med å automatisere. Det kan ta litt tid å bli fortrolig med den komplekse syntaksen, men cron er et kraftig verktøy. Du kan bruke cron til både systemdekkende oppgaver og brukerspesifikke oppgaver.

Med en komplisert syntaks for planlegging er cron kraftig, men du bør sannsynligvis ha en god referanse for hånden. Crontabs tillater kommentarer, så du vil kanskje inkludere en kommentarlinje i din for å dokumentere tidsfeltene.

Dele Dele kvitring E -post Hvordan bruke Crontab til å automatisere gjentatte oppgaver i Linux

Vil du spare tid og automatisere viktige prosesser i Linux? Crontab er svaret.

Les neste
Relaterte temaer
  • Linux
  • Computer Automation
  • Oppgaveautomatisering
  • Linux -kommandoer
Om forfatteren Bobby Jack(58 artikler publisert)

Bobby er en teknologientusiast som jobbet som programvareutvikler i de fleste to tiårene. Han brenner for spill, jobber som Reviews Editor i Switch Player Magazine, og er fordypet i alle aspekter av online publisering og webutvikling.

verdens mest populære app
Mer fra Bobby Jack

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere