Kjør en Cron -jobb hvert minutt

Run Cron Job Every Minute



Hvis du vil kjøre et program eller skript i bakgrunnen på Linux, er cron -jobben veldig viktig. Ved hjelp av cron -jobber kan du kjøre et program eller skript i bakgrunnen etter et gitt tidsintervall.

La oss se på noen av de virkelige eksemplene på cron -jobber.







  • La oss si at du eier et nettsted, og du vil sende alle brukerne av nettstedet ditt en e -post hver dag. Alt du trenger å gjøre er å skrive et skript for å sende e -post og sette opp en cron -jobb for å kjøre skriptet hver dag.
  • La oss si at du eier et reklamebyrå, og du vil minne alle annonsørene hvis saldo er under 5 $ for å lade opp. Alt du trenger å gjøre er å skrive et skript som sjekker saldoen til alle annonsørene, og når det er under 5 $, sender det et varsel til annonsørens mobilnummer eller e -post. Sett deretter opp en cron -jobb for å kjøre skriptet hvert 5. til 10. minutt, eller hver time.

Det er mange andre bruksområder for cron -jobber i Linux.



I denne artikkelen vil jeg vise deg hvordan du kjører cron -jobber hvert minutt på Linux. Jeg kommer til å bruke Debian 9 Stretch til demonstrasjonen. Men du kan bruke hvilken som helst moderne Linux -distribusjon etter eget valg. La oss komme i gang.



På Linux trenger du ikke å være det rot for å kjøre cron -jobber. Du kan kjøre cron -jobber som enhver bruker. Hver bruker på Linux kan bruke en crontab fil for å kjøre sitt eget sett med cron -jobber.





Som standard har ikke en bruker en crontab fil på Linux. Du kan lage en crontab fil med følgende kommando:

$crontab-Og



Hvis du kjører denne kommandoen for første gang, bør du bli bedt om å velge et tekstredigeringsprogram fra listen. Jeg vil velge nano , standard. Du kan velge den du liker. Når du er ferdig, trykker du på .

De crontab filen skal opprettes (hvis den ikke allerede er tilgjengelig) og åpnes med din favoritt tekstredigerer. Nå kan du legge til dine egne cron -jobber på slutten av denne filen, og når du er fornøyd, bare lagre den og gå ut av tekstredigereren.

Syntaks for å kjøre en kommando hvert minutt:

Syntaksen til crontab filen er som følger:

minutt time dayOfMonth month dayOfWeek commandToRun

Her,

  • minutt kan være 0 til 59 .
  • time kan også være 0 til 59 .
  • dayOfMonth kan være 1 til 31 .
  • måned kan være 1 til 12 .
  • ukedag kan være 0 til 7 . 0 og 7 betyr søndag, 1 betyr mandag, 2 betyr tirsdag og så videre.

Å kjøre a commandToRun kommando hvert minutt, bør du skrive det i crontab filen som følger:

* * * * *commandToRun

Kjøre en Crob -jobb hvert minutt:

Nå som vi kjenner teoriene, la oss legge til et enkelt skript timer.sh til crontab filen og se hvordan du håndterer den.

I timer.sh script, har jeg bare følgende koderader. Alt det gjør er å lage en ny fil /home/shovon/bin/timer.log (hvis den ikke allerede eksisterer) og legger utdatoen fra datokommandoen til den.

La oss nå legge til skriptet til vårt crontab og la den gå hvert minutt med følgende linje:

* * * * * /hjem/shovon/er/timer.sh

Når du har lagret crontab filen og avslutt teksteditoren, den nye crontab filen skal installeres.

Etter at et minutt er gått, er en ny fil timer.log er opprettet i ønsket katalog som du kan se i den markerte delen av skjermbildet nedenfor.

Fra timer.log loggfil, er det åpenbart at skriptet timer.sh løper hvert minutt.

Finne feil fra Cron -jobbene:

For å fange feil fra en cron -jobb, kan du sende feilene til en feil logg fil og normale utganger til access.log fil for eksempel. Selvfølgelig kan du navngi filene hva du vil.

For å demonstrere dette endret jeg skriptet mitt timer.sh en liten bit. Nå sendes feilene til feil logg filen i / home / shovon / bin katalogen og utgangene sendes til access.log i / home / shovon / bin katalog.

Først /tmp/i_must_be_here filen eksisterer ikke, så jeg får feilen i feil logg filen som du kan se.

De access.log filen er tom for øyeblikket.

Nå skal jeg lage filen /tmp/i_must_be_here

Og som du kan se, er utgangen i access.log filen nå.

Hvis du vil, kan du omdirigere utdataene og feilene i den samme filen som følger:

Som du kan se, sendes STDIN- og STDERR -utgangene til ut.logg fil.

Sørg for at den siste jobben var ferdig med å kjøre før du kjørte jobben igjen:

For at dette skal fungere, kan du opprette en midlertidig fil like etter at jobben starter og fjerne den like før den er ferdig. Deretter kan du sjekke om den midlertidige filen finnes før du starter jobben. Hvis den gjør det, kan du gå ut av jobben og kjøre jobben bare når den midlertidige filen ikke er tilgjengelig.

Dette enkle skriptet gjør nettopp det.

Som du kan se, timer.pid filen er opprettet.

Leser access.log filen viser at cron -jobben ikke kjøres før den forrige cron -jobben er ferdig. Som du kan se, kjørte den 01:32:01, og neste gang skulle den ha kjørt 01:33:01, men den gjorde den ikke. I stedet løp den 01:35:01, omtrent 3 minutter senere.

Organisering av Cron -jobbutganger for enkel feilsøking:

Du kan formatere utgangene pent for å gjøre cron -jobben lettere å feilsøke.

Et eksempel på hvordan det kan gjøres er gitt i det følgende skriptet.

Som du kan se, blir utdataene, feilene og suksessmeldingene pent skrevet ut i loggfilen.

Du kan gjøre fantastiske ting med cron -jobber og skallskript. Jeg demonstrerte noen av ideene her. Men himmelen er din grense. Eksperimenter gjerne med ideer du har. Takk for at du leste denne artikkelen.