Cron Jobs: Komplet vejledning til begyndere

Cron Jobs Complete Beginners Tutorial



Cron er det mest nyttige værktøj i et Linux- eller UNIX-lignende operativsystem, der tillader at køre kommandoer eller scripts på en given tidsplan uden brugerindgreb. De planlagte kommandoer og scripts er også navngivet som cron -job. Det bruges mest til at automatisere tilbagevendende job som at køre planlagte sikkerhedskopier, rense midlertidige filer, systemvedligeholdelse og forskellige andre tilbagevendende job. Det ligner Task Scheduler i Windows OS.

I denne vejledning giver vi dig den grundlæggende introduktion til alt, hvad du skal forstå for at planlægge et job med cron. Dette inkluderer grundlæggende syntaks for cron, redigering af crontab -fil, planlægning af et job med cron med få eksempler, visning af cron -job osv.







Grundlæggende om Cron Job

Lad os forstå nogle grundlæggende principper for et cron -job.



Hvad er Crond?

Crond er dæmonen i Linux -systemet, der kører i baggrunden og kontrollerer hvert minut, om der er planlagt et job på det tidspunkt. Hvis der er det, udfører det jobbet, ellers forbliver det inaktivt.



Cron Job Syntax

Syntaksen for cron job er som følger:





* * * * *kommando/manuskript

Fra venstre:

  • Den første * svarer til minutter (0-59)
  • Den anden * svarer til Timer (0-23)
  • Den tredje * svarer til dag i måneden (1-31)
  • Den fjerde * svarer til årets måned (1-12)
  • Den femte * svarer til ugedag (0-6, søndag til lørdag)

Brug følgende operatørsymboler til at angive flere værdier i et felt:



  1. Stjerne (*): For at angive alle mulige værdier for et felt
  2. Streg (-): Til s angive en række værdier
  3. Kommaet (,): For at angive en liste med værdier
  4. Separator (/): For at angive en trinværdi

Redigering af Crontab -fil

Crontab er en fil, der indeholder de planlagte job i en bestemt syntaks. Der er to typer crontab -filer; den ene til systemspecifikke cron-job og den anden til brugerspecifikke cron-job.

System cron job

De systemomfattende cron-job er placeret i /etc/crontab fil og /etc/cron.d bibliotek, og de bliver kørt igennem /etc/cron.time , /etc/cron.daily , /etc/cron.weekly og /etc/cron. månedligt. Kun en systemadministrator kan få adgang til disse filer.

En systemadministrator kan definere et cron -job ved hjælp af følgende kommando:

$nano /etc/crontab

Her er syntaksen for jobbet i /etc/crontab fil:

# min hr dayofmonth måned dayofweek brugernavn kommando
* * * * *bruger 1ifconfig

Bruger-specifikke cron-job

De brugerspecifikke cron-job er placeret i / var / spole / cron / crontabs vejviser. Selvom du kan redigere disse job manuelt, anbefales det at redigere disse job ved hjælp af kommandoen crontab -e.

En standardbruger kan definere et cron -job ved hjælp af følgende kommando:

$crontab-Og

Hvis du f.eks. Er logget på som en testbruger, redigerer crontab -e -kommandoen crontab -e -kommandoen for testbrugeren. På samme måde, hvis du er logget ind som en rodbruger, redigerer kommandoen crontab -e crontab -filen for rodbrugeren.

Udfør nedenstående kommando i Terminal for at redigere crontab -filen for enhver anden bruger:

$sudocrontab-u <brugernavn> -Og

For eksempel, hvis du er logget ind som en test1 -bruger og vil redigere crontab -filen for test2 -brugeren, vil kommandoen være:

$sudocrontab-utest2-Og

Her er syntaksen for cron -jobbet, der kan tilføjes i crontab -filen:

# m h dayofmonth month dayofweek kommando
* * * * * ifconfig

Du kan se i brugerspecifikke job, at der ikke er gemt noget brugernavn.

Crontab -kommandoer

Kommandoen crontab bruges til at redigere, liste og fjerne cron -job:

  • crontab -e For at redigere den aktuelle brugers crontab -fil
  • crontab -l For at vise indholdet i crontab -filen
  • crontab -u [brugernavn] For at redigere enhver anden brugers crontab -fil
  • crontab -r For at fjerne crontab -filen for den aktuelle bruger
  • crontab -i For at få vist en prompt, før du fjerner den aktuelle brugers crontab -fil

Planlægning af et job med Cron

Med Cron kan du køre et job på et bestemt tidspunkt, dato og intervaller med en minimumsenhed i minutter, dvs. du kan køre et job hvert minut.

For at planlægge et job med cron skal du åbne crontab -filen ved hjælp af metoden, der blev diskuteret i det foregående afsnit. Når du har åbnet crontab -filen, bliver du bedt om at vælge en teksteditor. Indtast et nummer for at vælge din foretrukne teksteditor. Rul ned til bunden af ​​filen, og tilføj job i syntaksen beskrevet ovenfor. Hver linje i en fil angiver en kommando. De første fem poster i linjen angiver det planlagte tidspunkt, og den sidste post angiver, hvilken kommando eller script der skal køres.

Eksempel:

Følgende linje i crontab-filen planlægger cron-jobbet til at køre kommandoen/scriptet hvert 30. minut over de fem timer på alle ugens dage fra mandag til lørdag.

* /30 5 * * 1-6kommando/manuskript

Referat

I dette felt angiver vi de minutter, hvor vi vil have kommandoen udført. Det er angivet fra 0 til 59. * i dette felt betyder at køre jobbet hvert minut. I ovenstående crontab -linje fortæller */30 cron -jobbet at køre den angivne kommando/script hvert 30. minut.

Timer

I dette felt angiver vi de timer, hvor vi vil have kommandoen udført. Det er angivet fra 0 til 23. * i dette felt betyder at køre jobbet hver time. I ovenstående crontab -linje fortæller værdien 5 cron -jobbet at køre den angivne kommando/script hver femte time.

Dag i måneden

I dette felt angiver vi de bestemte dage i måneder, hvor vi vil have kommandoen udført. Det er angivet fra 1 til 31. * i dette felt betyder hver dag. I ovenstående crontab -linje fortæller * * cron -jobbet at køre den angivne kommando/script hver dag.

Årets måned

I dette felt angiver vi de bestemte måneder, hvor vi vil have kommandoen udført. Det er angivet fra 1 til 12. * i dette felt betyder hver måned. I ovenstående crontab -linje fortæller * * cron -jobbet at køre den angivne kommando/script hver måned.

Ugedag

I dette felt angiver vi de bestemte ugedage, hvor vi vil have kommandoen udført. Det er angivet fra 0 til 6 fra søndag til lørdag (0 for søndag og 6 for lørdag). * I dette felt betyder hver dag i en uge. I ovenstående crontab -linje fortæller * * cron -jobbet at køre den angivne kommando/script hver dag om en uge.

Eksempler på Cron Jobs

Her er et par eksempler på cron -job:

Kør et cron -job hvert 15. minut

For at planlægge, at et cron -job skal køre hvert 15. minut, skal du tilføje nedenstående linje i crontab -filen:

* /femten * * * *kommando/manuskript

Kør et cron -job kl. 5 om dagen hver dag

Hvis du vil planlægge, at et cron -job skal køre kl. 5 hver dag, skal du tilføje nedenstående linje i crontab -filen:

0 5 * * *kommando/manuskript

Kør et cron -job kl. 17.00 hver dag

For at planlægge et cron -job til at køre kl. 17.00 hver dag, tilføj nedenstående linje i crontab -filen:

0 17 * * *kommando/manuskript

Kør et cron -job kl. 9 om morgenen den første dag i hver måned

For at planlægge et cron -job til at køre kl. 9 den første dag i hver måned, tilføj nedenstående linje i crontab -filen:

0 9 1 * *kommando/manuskript

Kør et cron -job hver time hver 15. marts

For at planlægge et cron -job hver time den 15. marts, tilføj nedenstående linje i crontab -filen:

0 * femten 3 *kommando/manuskript

Kør et cron -job hver 5. time

For at planlægge et cron -job hver 5. time, tilføj nedenstående linje i crontab -filen:

0 * /5 * * *kommando/manuskript

Kør et cron -job hvert 15. minut

For at planlægge, at et cron -job skal køre hvert 15. minut, skal du tilføje nedenstående linje i crontab -filen:

* /femten * * * *

Brug af strenge

Følgende strenge kan også bruges til at definere et job:

  1. @hver time: At udføre et job en gang hver time, dvs. 0 * * * *
  2. @midnat: At udføre et job en gang hver dag, dvs. 0 0 * * *
  3. @daglige: samme som midnat
  4. @ugentlig: At udføre et job en gang om ugen, dvs. 0 0 * * 0
  5. @månedlige: At udføre et job en gang hver måned, dvs. 0 0 1 * *
  6. @årligt: At udføre et job en gang om året, dvs. 0 0 1 1 *
  7. @årligt: det samme som @årligt
  8. @reboot: At udføre et job en gang ved hver opstart

For eksempel, for at køre et script eller en kommando hver uge, ville posten i crontab -filen være:

@ugentlig kommando/manuskript

Foruddefinerede Cron -biblioteker

Der er nogle foruddefinerede cron-mapper i Linux, hvor de gemte scripts automatisk udføres. Hvis vi placerer et script under disse mapper, udføres det automatisk på det konfigurerede tidspunkt.

  • /etc/cron.daily
  • /etc/cron.time
  • /etc/cron. månedligt
  • /etc/cron.weekly

For eksempel at udføre et script en gang hver måned, skal du placere det i /etc/cron.månedligt.

Se Cron -job

Se job for den aktuelle bruger

Brug følgende kommando til at se alle de planlagte cron -job for den aktuelle bruger:

$crontab-det

Se job for rodbrugerne

For at se alle planlagte brugeres planlagte job skal du udstede følgende kommando i Terminal:

$kat /etc/crontab

Du skal være logget ind som en rodbruger eller køre kommandoen som sudo.

Se job for de andre brugere

For at se alle de planlagte job for en bestemt bruger skal du udstede følgende kommando i Terminal og erstatte den med det faktiske brugernavn:

$sudocrontab-u <brugernavn> -det

For at køre denne kommando skal du bruge sudo -rettigheder.

Se timecron -job

For at se alle cron -job, der er konfigureret til at køre hver time, skal du udstede følgende kommando i Terminal:

$ls -det /etc/kr. hver time

Se daglige cron -job

For at se alle cron -job, der er konfigureret til at køre dagligt, skal du udstede følgende kommando i Terminal:

$ls -det /etc/cron.daily/

Se ugentlige cron -job

For at se alle cron -job, der er konfigureret til at køre ugentligt, skal du udstede følgende kommando i Terminal:

$ls -det /etc/kr. hver uge/

Se månedlige cron -job

For at se alle cron -job, der er konfigureret til at køre månedligt, skal du udstede følgende kommando i Terminal:

$ls -det /etc/kr. månedligt/

Sikkerhedskopier alle Cron -job

Det anbefales at gemme en sikkerhedskopi af alle cron -job i en fil, så du kan gendanne i tilfælde af sletning. For at tage en sikkerhedskopi af alle de aktuelle job skal du bruge omdirigeringsoperatoren til at omdirigere output fra crontab -l til en fil.

$crontab-det >backup_cron.txt

Fjernelse af alle planlagte Cron -job

For at fjerne alle planlagte cron -job skal du bruge -r -flaget som følger:

$crontab-r

Cron Tilladelse

Vi kan begrænse adgangen til crontab -kommando gennem to filer: / etc/cron.allow og/etc/cron.deny.

  • /etc/cron.allow - Tilføj brugere (en pr. Linje), som du vil give adgang til crontab -kommandoer. Disse brugere kan køre planlagte job.
  • /etc/cron.deny - Tilføj brugere (en pr. Linje), som du vil nægte adgang til crontab -kommandoer. Disse brugere kan ikke køre planlagte job.

Crontab -syntaksgeneratorer

Der er nogle websteder, der tillader generering af syntaks for crontabs. Disse websteder gør det lettere at generere crontab -udtryk uden at skulle huske syntaksen. Selvom der er forskellige websteder tilgængelige for syntaksgeneratorer som f.eks crontabgenerator.com , crontab-generator.org , og cronmaker.com . Den, jeg mest foretrækker og fandt nyttig, er crontab.guru . Baseret på brugerinput genererer det et crontab-udtryk, som du kan kopiere og indsætte i crontab-filen.

Konklusion

I denne vejledning har vi forklaret det grundlæggende i cron -job, dets syntaks og hvordan man konfigurerer det. Vi har også diskuteret, hvordan man ser cron -job, opretter en sikkerhedskopi og fjerner dem, hvis det ikke længere er nødvendigt.