Cron Jobs: Komplett opplæring for nybegynnere

Cron Jobs Complete Beginners Tutorial



Cron er det mest nyttige verktøyet i et Linux- eller UNIX-lignende operativsystem som lar kjøre kommandoer eller skript på en gitt tidsplan uten brukerintervensjon. De planlagte kommandoene og skriptene er også navngitt som cron -jobber. Den brukes hovedsakelig til å automatisere gjentagende jobber som å kjøre planlagte sikkerhetskopier, rense midlertidige filer, systemvedlikehold og forskjellige andre tilbakevendende jobber. Det ligner oppgaveplanleggeren i Windows OS.

I denne opplæringen vil vi gi deg den grunnleggende introduksjonen til alt du trenger å forstå for å planlegge en jobb med cron. Dette inkluderer grunnleggende syntaks for cron, redigering av crontab -fil, planlegging av en jobb med cron med få eksempler, visning av cron -jobb, etc.







Grunnleggende om Cron Job

La oss forstå noen grunnleggende om en cron -jobb.



Hva er Crond?

Crond er demonen i Linux -systemet som kjører i bakgrunnen og sjekker hvert minutt om det er planlagt en jobb på det tidspunktet. Hvis det er det, utfører den jobben, ellers forblir den inaktiv.



Cron Job Syntax

Syntaksen for cron -jobben er som følger:





* * * * *kommando/manus

Fra venstre:

  • Den første * tilsvarer minutter (0-59)
  • Den andre * tilsvarer timer (0-23)
  • Den tredje * tilsvarer dag i måneden (1-31)
  • Den fjerde * tilsvarer måneden i året (1-12)
  • Den femte * tilsvarer ukedag (0-6, søndag til lørdag)

For å angi flere verdier i et felt, bruk følgende operatørsymboler:



  1. Stjerne (*): For å angi alle mulige verdier for et felt
  2. Bindestrek (-): Til s spesifisere en rekke verdier
  3. Komma (,): For å angi en liste med verdier
  4. Separator (/): For å angi en trinnverdi

Redigering av Crontab -fil

Crontab er en fil som inneholder de planlagte jobbene i en bestemt syntaks. Det er to typer crontab -filer; den ene for systemspesifikke cron-jobber og den andre for brukerspesifikke cron-jobber.

System cron jobber

De systemomfattende cron-jobbene er lokalisert i /etc/crontab filen og /etc/cron.d katalog, og de blir kjørt gjennom /etc/cron.time , /etc/cron.daily , /etc/cron.weekly og /etc/cron.månedlig. Bare en systemadministrator kan få tilgang til disse filene.

En systemadministrator kan definere en cron -jobb ved å bruke følgende kommando:

$nano /etc/crontab

Her er syntaksen til jobben i /etc/crontab fil:

# min hr dayofmonth month dayofweek brukernavn kommando
* * * * *bruker1ifconfig

Brukerspesifikke cron-jobber

De brukerspesifikke cron-jobbene ligger i / var / spole / cron / crontabs katalog. Selv om du kan redigere disse jobbene manuelt, anbefales det å redigere disse jobbene ved hjelp av kommandoen crontab -e.

En standardbruker kan definere en cron -jobb ved å bruke følgende kommando:

$crontab-Og

For eksempel, hvis du er logget inn som en testbruker, vil kjøring av kommandoen crontab -e redigere crontab -filen for testbrukeren. På samme måte, hvis du er logget inn som en rotbruker, redigerer kommandoen crontab -e crontab -filen for rotbrukeren.

Utfør kommandoen nedenfor i Terminal for å redigere crontab -filen for enhver annen bruker:

$sudocrontab-u <brukernavn> -Og

For eksempel, hvis du er logget inn som en test1 -bruker og vil redigere crontab -filen for test2 -brukeren, vil kommandoen være:

$sudocrontab-utest2-Og

Her er syntaksen til cron -jobben som kan legges til i crontab -filen:

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

Du kan se i brukerspesifikke jobber at det ikke er lagret noe brukernavn.

Crontab -kommandoer

Crontab -kommandoen brukes til å redigere, liste og fjerne cron -jobbene:

  • crontab -e For å redigere gjeldende brukers crontab -fil
  • crontab -l For å vise innholdet i crontab -filen
  • crontab -u [brukernavn] For å redigere en annen brukers crontab -fil
  • crontab -r For å fjerne crontab -filen til den nåværende brukeren
  • crontab -i For å vise en melding før du fjerner den nåværende brukerens crontab -fil

Planlegge en jobb med Cron

Med Cron kan du kjøre en jobb på et bestemt tidspunkt, dato og intervaller med en minimumsenhet i minutter, dvs. du kan kjøre en jobb hvert minutt.

For å planlegge en jobb med cron, åpner du crontab -filen ved hjelp av metoden som ble diskutert i forrige seksjon. Når du har åpnet crontab -filen, blir du bedt om å velge et tekstredigeringsprogram. Skriv inn et tall for å velge ønsket tekstredigerer. Rull ned til bunnen av filen og legg til jobber i syntaksen beskrevet ovenfor. Hver linje i en fil spesifiserer en kommando. De fem første oppføringene på linjen angir den planlagte tiden, og den siste oppføringen angir hvilken kommando eller skript som skal kjøres.

Eksempel:

Følgende linje i crontab-filen planlegger cron-jobben for å kjøre kommandoen/skriptet hvert 30. minutt siste 5 timer hver ukedag fra mandag til lørdag.

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

Minutter

I dette feltet spesifiserer vi minuttene når vi vil at kommandoen skal utføres. Den er spesifisert fra 0 til 59. * i dette feltet betyr å kjøre jobben hvert minutt. På crontab -linjen ovenfor forteller */30 cron -jobben om å kjøre den angitte kommandoen/skriptet hvert 30. minutt.

Timer

I dette feltet spesifiserer vi timene når vi vil at kommandoen skal utføres. Det er spesifisert fra 0 til 23. * i dette feltet betyr å kjøre jobben hver time. På crontab -linjen ovenfor forteller verdien 5 cron -jobben å kjøre den angitte kommandoen/skriptet hver femte time.

Dag i måneden

I dette feltet spesifiserer vi bestemte dager i måneder når vi vil at kommandoen skal utføres. Det er spesifisert fra 1 til 31. * i dette feltet betyr hver dag. På crontab -linjen ovenfor forteller * * cron -jobben om å kjøre den spesifiserte kommandoen/skriptet hver dag.

Årets måned

I dette feltet spesifiserer vi de bestemte månedene når vi vil at kommandoen skal utføres. Det er spesifisert fra 1 til 12. * i dette feltet betyr hver måned. På crontab -linjen ovenfor forteller * cron -jobben å kjøre den spesifiserte kommandoen/skriptet hver måned.

Ukedag

I dette feltet spesifiserer vi bestemte dager i uken når vi vil at kommandoen skal utføres. Det er spesifisert fra 0 til 6 fra søndag til lørdag (0 for søndag og 6 for lørdag). * I dette feltet betyr hver dag i en uke. I crontab -linjen ovenfor forteller * cron -jobben å kjøre den spesifiserte kommandoen/skriptet hver dag om en uke.

Eksempler på Cron Jobs

Her er noen eksempler på cron -jobber:

Kjør en cron -jobb hvert 15. minutt

For å planlegge en cron -jobb for å kjøre hvert 15. minutt, legg til linjen nedenfor i crontab -filen:

* /femten * * * *kommando/manus

Kjør en cron -jobb klokken 5 hver dag

For å planlegge en cron -jobb for å kjøre klokken 5 hver dag, legg til linjen nedenfor i crontab -filen:

0 5 * * *kommando/manus

Kjør en cron -jobb kl 17 hver dag

For å planlegge en cron -jobb for å kjøre klokken 17.00 hver dag, legg til linjen nedenfor i crontab -filen:

0 17 * * *kommando/manus

Kjør en cron -jobb klokken 9.00 den første dagen i hver måned

For å planlegge at en cron -jobb skal kjøres klokken 9.00 den første dagen i hver måned, legger du til linjen nedenfor i crontab -filen:

0 9 1 * *kommando/manus

Kjør en cron -jobb hver time hver 15. mars

For å planlegge en cron -jobb hver time hver 15. mars, legg til linjen nedenfor i crontab -filen:

0 * femten 3 *kommando/manus

Kjør en cron -jobb hver 5. time

For å planlegge en cron -jobb hver 5. time, legg til linjen nedenfor i crontab -filen:

0 * /5 * * *kommando/manus

Kjør en cron -jobb hvert 15. minutt

For å planlegge en cron -jobb for å kjøre hvert 15. minutt, legg til linjen nedenfor i crontab -filen:

* /femten * * * *

Bruke strenger

Følgende strenger kan også brukes til å definere en jobb:

  1. @hver time: For å utføre en jobb en gang i timen, dvs. 0 * * * *
  2. @midnatt: Å utføre en jobb en gang hver dag, dvs. 0 0 * * *
  3. @daglig: samme som midnatt
  4. @ukentlig: Å utføre en jobb en gang i uken, dvs. 0 0 * * 0
  5. @månedlig: Å utføre en jobb en gang hver måned, dvs. 0 0 1 * *
  6. @årlig: Å utføre en jobb en gang hvert år, dvs. 0 0 1 1 *
  7. @årlig: samme som @årlig
  8. @reboot: For å utføre en jobb en gang ved hver oppstart

For eksempel, for å kjøre et skript eller en kommando hver uke, vil oppføringen i crontab -filen være:

@ukentlig kommando/manus

Forhåndsdefinerte Cron -kataloger

Det er noen forhåndsdefinerte cron-kataloger i Linux der de lagrede skriptene automatisk kjøres. Hvis vi plasserer et skript under disse katalogene, blir det automatisk utført på det konfigurerte tidspunktet.

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

For eksempel, for å kjøre et skript en gang hver måned, må du plassere det i /etc/cron.månedlig.

Se Cron -jobber

Se jobber for den nåværende brukeren

Bruk følgende kommando for å se alle de planlagte cron -jobbene for den nåværende brukeren:

$crontab-de

Se jobber for rotbrukerne

For å se alle de planlagte jobbene til rotbrukeren, utsted følgende kommando i Terminal:

$katt /etc/crontab

Du må være pålogget som en rotbruker eller kjøre kommandoen som sudo.

Se jobber for de andre brukerne

For å se alle de planlagte jobbene til en bestemt bruker, utsted følgende kommando i Terminal og erstatt det med det faktiske brukernavnet:

$sudocrontab-u <brukernavn> -de

For å kjøre denne kommandoen trenger du sudo -privilegier.

Se timebaserte cron -jobber

For å se alle cron -jobbene som er konfigurert til å kjøre hver time, utsteder du følgende kommando i Terminal:

$ls -de /etc/cron. hver time

Se daglige cron -jobber

For å se alle cron -jobbene som er konfigurert til å kjøre daglig, må du utstede følgende kommando i Terminal:

$ls -de /etc/cron.daily/

Se ukentlige cron -jobber

For å se alle cron -jobbene som er konfigurert til å kjøre ukentlig, utsteder du følgende kommando i Terminal:

$ls -de /etc/cron. ukentlig/

Se månedlige cron -jobber

For å se alle cron -jobbene som er konfigurert til å kjøre månedlig, må du utstede følgende kommando i Terminal:

$ls -de /etc/månedlig/

Sikkerhetskopier alle Cron -jobber

Det anbefales å ta en sikkerhetskopi av alle cron -jobbene i en fil, slik at du kan gjenopprette i tilfelle sletting. For å ta en sikkerhetskopi av alle gjeldende jobber, bruk omdirigeringsoperatoren for å omdirigere utdataene fra crontab -l til en fil.

$crontab-de >backup_cron.txt

Fjerne alle planlagte Cron -jobber

For å fjerne alle planlagte cron -jobber, bruk -r -flagget som følger:

$crontab-r

Cron Tillatelse

Vi kan begrense tilgangen til crontab -kommandoen gjennom to filer: / etc/cron.allow og/etc/cron.deny.

  • /etc/cron.allow - Legg til brukere (én per linje) som du vil gi tilgang til crontab -kommandoer. Disse brukerne kan kjøre planlagte jobber.
  • /etc/cron.deny - Legg til brukere (én per linje) som du vil nekte tilgang til crontab -kommandoer. Disse brukerne kan ikke kjøre planlagte jobber.

Crontab syntaksgeneratorer

Det er noen nettsteder som tillater generering av syntaks for crontabs. Disse nettstedene gjør det lettere å generere crontab -uttrykk uten å måtte huske syntaksen. Selv om det er forskjellige nettsteder tilgjengelig for syntaksgeneratorer som f.eks crontabgenerator.com , crontab-generator.org , og cronmaker.com . Den jeg for det meste foretrekker og synes er nyttig er crontab.guru . Basert på brukerinndata, genererer det et crontab-uttrykk som du kan kopiere og lime inn i crontab-filen.

Konklusjon

I denne opplæringen har vi forklart det grunnleggende om cron -jobber, dets syntaks og hvordan du konfigurerer det. Vi har også diskutert hvordan du kan se cron -jobber, lage en sikkerhetskopi og fjerne dem hvis det ikke lenger er nødvendig.