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 brugerne af dit websted en e-mail hver dag. Alt hvad du skal gøre er at skrive et e-mail-afsendende script og oprette et cron-job til at køre dette 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 hvad 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 underretning 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 bruger Debian 9 Stretch til demonstrationen. Men du kan bruge enhver moderne Linux-distribution efter eget valg. Lad os komme igang.
Grundlæggende om Crontab:
På Linux behøver du ikke 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 -e
Hvis du kører denne kommando for første gang, skal du blive bedt om at vælge en teksteditor 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 yndlings teksteditor. Nu kan du tilføje dine egne cron-job i slutningen af denne fil, og når du er glad, skal du bare gemme den og afslutte fra teksteditoren.
Syntaks for at køre en kommando hvert minut:
Syntaksen for crontab filen er som følger:
minut time dayOfMonth month dayOfWeek commandToRunHer,
- 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:
* * * * * commandToRunKø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 den.
I timer.sh script, jeg har kun følgende linjer med koder. Alt det gør er at oprette en ny fil / home / shovon / bin / timer.log (hvis der 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:
* * * * * / home / shovon / bin / timer.sh
Når du har gemt crontab fil og afslut ud af teksteditoren, den nye crontab filen 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 på skærmbilledet nedenfor.
Fra timer.log logfil, er det indlysende, at scriptet timer.sh kører hvert minut.
Fangstfejl fra Cron Jobs:
For at hente fejl fra et cron-job kan du sende fejlene til en fejl.log fil og normale udgange til adgang.log fil for eksempel. 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 fejl.log fil i / hjem / skovl / skraldespand katalog og output sendes til adgang.log i / hjem / skovl / skraldespand vejviser.
Først / tmp / i_must_be_here filen findes ikke, så jeg får fejlen i fejl.log fil, som du kan se.
Det adgang.log filen er tom i øjeblikket.
Nu skal jeg oprette filen / tmp / i_must_be_here
Og som du kan se, er output i adgang.log fil nu.
Hvis du vil, kan du omdirigere output og fejl i samme fil som følger:
Som du kan se, sendes STDIN- og STDERR-udgange til ud.log fil.
Sørg for, at det sidste job er afsluttet, inden du kører jobbet igen:
For at dette skal fungere, kan du oprette en midlertidig fil lige efter jobbet starter og fjerne den lige før den er færdig. Derefter kan du kontrollere, om den midlertidige fil findes, før du starter jobbet. Hvis det gør det, kan du kun afslutte jobbet og kun 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 fil oprettes.
Læsning af adgang.log filen viser, at cron job ikke kører, før det forrige cron job er færdigt. Som du kan se, løb det kl. 01:32:01, og næste gang det skulle have kørt kl. 01:33:01, men det gjorde det ikke. I stedet løb den klokken 01:35:01, cirka 3 minutter senere.
Organisering af Cron-jobudgange til nem fejlretning:
Du kan formatere outputene pænt for at gøre dit cron-job lettere at debugge.
Et eksempel på, hvordan det kan gøres, findes i det følgende script.
Som du kan se, er output, fejl og succesmeddelelser pænt udskrevet 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 de ideer, du har. Tak, fordi du læste denne artikel.