Kør et Cron -job hvert minut

Run Cron Job Every Minute



Hvis du vil køre et program eller script i baggrunden på Linux, er cron job meget vigtigt. Ved hjælp af cron -job kan du udføre et program eller script i baggrunden efter et givet interval.

Lad os se på nogle af de virkelige eksempler på cron -job.







  • Lad os sige, at du ejer et websted, og du vil sende alle brugere af dit websted en e -mail hver dag. Alt du skal gøre er at skrive et e -mail -afsendelseskript og oprette et cron -job til at køre det script hver dag.
  • Lad os sige, at du ejer et reklamebureau, og du vil minde alle de annoncører, hvis saldo er under 5 $ for at genoplade. Alt du skal gøre er at skrive et script, der kontrollerer saldoen for alle annoncørerne, og når det er under 5 $, sender det en meddelelse til annoncørens mobilnummer eller e -mail. Opret derefter et cron -job til at køre scriptet hvert 5. til 10. minut eller hver time.

Der er mange andre anvendelser af cron -job i Linux.



I denne artikel vil jeg vise dig, hvordan du kører cron -job hvert minut på Linux. Jeg vil bruge Debian 9 Stretch til demonstrationen. Men du kan bruge enhver moderne Linux -distribution efter eget valg. Lad os komme igang.



På Linux behøver du ikke at være det rod for at køre cron -job. Du kan køre cron -job som enhver bruger. Hver bruger på Linux kan bruge en crontab fil for at køre deres eget sæt cron -job.





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

$crontab-Og



Hvis du kører denne kommando for første gang, skal du blive bedt om at vælge en tekstredigerer fra listen. Jeg vælger nano , standard. Du kan vælge den, du kan lide. Når du er færdig, skal du trykke på .

Det crontab filen skal oprettes (hvis den ikke allerede er tilgængelig) og åbnes med din foretrukne teksteditor. Nu kan du tilføje dine egne cron -job i slutningen af ​​denne fil, og når du er tilfreds, skal du bare gemme den og forlade teksteditoren.

Syntaks for at køre en kommando hvert minut:

Syntaksen for crontab filen er som følger:

minut time dayOfMonth month dayOfWeek commandToRun

Her,

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

At køre en commandToRun kommando hvert minut, skal du skrive det i crontab fil som følger:

* * * * *commandToRun

Kører et Crob -job hvert minut:

Nu hvor vi kender teorierne, lad os tilføje et simpelt script timer.sh til crontab fil og se, hvordan du administrerer det.

I timer.sh script, har jeg kun følgende kodelinjer. Alt det gør er at oprette en ny fil /home/shovon/bin/timer.log (hvis den ikke allerede findes) og tilføjer output fra dato -kommandoen til den.

Lad os nu tilføje scriptet til vores crontab og lad det køre hvert minut med følgende linje:

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

Når du gemmer crontab fil og afslut ud af teksteditoren, den nye crontab fil skal installeres.

Efter et minut er gået, er en ny fil timer.log oprettes i det ønskede bibliotek, som du kan se i det markerede afsnit af skærmbilledet herunder.

Fra timer.log log -fil, er det indlysende, at scriptet timer.sh kører hvert minut.

Hentning af fejl fra Cron -jobene:

For at fange fejl fra et cron -job kan du sende fejlene til en error.log fil og normale output til access.log fil f.eks. Selvfølgelig kan du navngive filerne hvad du vil.

For at demonstrere dette ændrede jeg mit script timer.sh en lille smule. Nu sendes fejlene til error.log fil i / hjem / shovon / bin bibliotek og output sendes til access.log i / hjem / shovon / bin vejviser.

I første omgang /tmp/i_must_be_here filen findes ikke, så jeg får fejlen i error.log fil som du kan se.

Det access.log filen er tom i øjeblikket.

Nu skal jeg oprette filen /tmp/i_must_be_here

Og som du kan se, er output i access.log fil nu.

Hvis du vil, kan du omdirigere output og fejlene i den samme fil som følger:

Som du kan se, sendes STDIN- og STDERR -udgange til out.log fil.

Sørg for, at det sidste job var færdigt med at køre, før du kørte jobbet igen:

For at dette skal fungere, kan du oprette en midlertidig fil lige efter at jobbet starter og fjerne det lige før det er færdigt. Derefter kan du kontrollere, om den midlertidige fil findes, før du starter jobbet. Hvis det gør det, kan du kun forlade jobbet og køre jobbet, når den midlertidige fil ikke er tilgængelig.

Dette enkle script gør netop det.

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

Læsning af access.log fil viser, at cron -jobbet ikke kører, før det forrige cron -job er færdigt. Som du kan se, kørte den 01:32:01, og næste gang skulle den have kørt 01:33:01, men den gjorde den ikke. I stedet kørte den 01:35:01, cirka 3 minutter senere.

Organisering af Cron -joboutput til let fejlfinding:

Du kan formatere outputene pænt for at gøre dit cron -job lettere at fejlsøge.

Et eksempel på, hvordan det kan gøres, er givet i det følgende script.

Som du kan se, udskrives output, fejl og succesbeskeder pænt i logfilen.

Du kan gøre fantastiske ting med cron -job og shell -scripts. Jeg demonstrerede nogle af ideerne her. Men himlen er din grænse. Du er velkommen til at eksperimentere med ideer, du har. Tak fordi du læste denne artikel.