Crontab i Linux – med eksempler og verktøy i sanntid

La oss utforske crontab, dens kommandoer og ulike operasjoner knyttet til Crontab.

Vi vil lære hvordan du planlegger oppgaver ved hjelp av cron-verktøyet, og til slutt vil vi også diskutere noen av nettverktøyene som hjelper oss med formatering og testing av cron-kommandoene.

Innholdsfortegnelse

Opprinnelse

Crontab står for «cron table». Ordet cron er hentet fra det greske ordet Chronos som betyr tid. Crontab er en systemdaemon-prosess som automatisk utfører noen oppgaver og jobber i henhold til den planlagte tiden.

  Hvordan sette opp Regolith Linux 1.6

Brukssaker

Crontab er nyttig for å utføre ulike operasjoner som å håndtere automatisert sikkerhetskopiering, rotere loggfiler, synkronisere filer mellom eksterne maskiner og tømme midlertidige mapper osv. Crontab kan brukes til alle slags arbeid, men det blir spesielt nyttig når vi begynner å håndtere systemadministrasjon type arbeid.

Ved å bruke cron kan en administrator planlegge en jobb som skal kjøres på et bestemt tidspunkt og dag.

Så la oss se hvordan vi kan sette opp dette.

Crontab-syntaks

For å utføre en liste over kommandoer, leser cron-verktøyet konfigurasjonsfilene. For å tolke linjene i crontab-konfigurasjonstabellene følger den en Crontab-syntaks. Crontab har seks felt, og de første fem (1-5) feltene definerer dato og klokkeslett for utførelse. Det siste feltet, dvs. 6. felt, kan være et brukernavn og/eller oppgave /jobb/kommando/skript som skal utføres.

* * * * * USER_NAME KOMMANDO/SKRIPT Å UTFØRE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Ukedag (0 – 6) (0 er søndag, eller bruk navn)
│ │ │ |____________ Måned (1 – 12),* betyr hver måned
│ │ |______________ Dag i måneden (1 – 31),* betyr hver dag
│ |________________ Time (0 – 23),* betyr hver time
|__________________ Minutt (0 – 59), * betyr hvert minutt

Merknader:

  • Asterisk
  • brukes til å matche alle mulige verdier for et felt. For eksempel vil en stjerne brukt i timefeltet tilsvare hver time eller en stjerne i månedsfeltet vil tilsvare hver måned.

brukernavn er valgfritt (bare tilgjengelig hvis det er systemets crontab-fil)

Eksempler:

La oss forstå syntaksen ovenfor med noen eksempler

0 5 * * * /scripts/job.sh

1. Planlegg en cron som skal utføres kl. 05.00 daglig

0 6,18 * * * /scripts/job.sh

2. Planlegg en cron som skal utføres to ganger om dagen kl. 06.00 og 18.00

* * * * * /scripts/job.sh

3. Planlegg en cron for å utføre hvert minutt

0 19 * * mon /scripts/job.sh

4. Planlegg en cron som skal utføres hver mandag kl. 19.00.

*/10 * * * * /scripts/job.sh

5. Planlegg en cron som skal utføres hvert 15. minutt.

* * * feb,jun,oct * /script/job.sh

6. Planlegg en cron som skal utføres på utvalgte måneder

25 7 4 3 * /home/script/backup.sh

7. Kjør skallskriptet /home/script/backup.sh 4. mars kl. 07:25

8. Planlegg en cron som skal utføres hvert 30. sekund

  • Siden vi ikke har kontroll over sekunder i Crontab, men vi kan oppnå det gjennom to-trinns prosessen nedenfor.
* * * * * /home/scripts/script.sh
  • La oss først planlegge en oppgave som går hvert minutt.
* * * * * sleep 30; /home/scripts/script.sh

La oss nå bruke sleep-kommandoen til å pause utførelsen i 30 sekunder.

Oppgaven ovenfor vil stoppe utførelsen i 30 sekunder, og den vil fortsette igjen.

Type Cron-konfigurasjonsfiler

Det finnes to typer Cron-konfigurasjonsfiler:

UNIX/Linux-systemet Crontab

  5 beste dokkingstasjoner for bærbar PC å bruke med Linux (2021-utgaven)

Dette krever root-privilegium fordi det vanligvis brukes til systemtjenester og kritiske jobber. Det sjette feltet (i syntaksbeskrivelsen ovenfor) er navnet på en bruker som kommandoen skal kjøres som. Det gir systemet crontab muligheten til å kjøre kommandoer som enhver bruker.

Bruker Crontab

En bruker kan også installere sine egne cron-jobber ved å bruke crontab-kommandoen. Også her er det sjette feltet (i syntaksbeskrivelsen ovenfor) kommandoen som skal kjøres, og alle kommandoer kjøres som brukeren som opprettet crontab. Hver bruker kan ha sin egen crontab-fil, og selv om disse er filer i /var/spool/cron/crontabs, er de ikke ment å bli redigert direkte. Vi må bruke crontab-kommandoen for å redigere eller sette opp våre egne cron-jobber.

Hvordan virker det? Cron-tjenesten (daemon) kjører i bakgrunnen og sjekker hele tiden (hvert minutt) /etc/crontab-filen og /etc/cron.*/-katalogene. Den sjekker også katalogen /var/spool/cron/. Kommandoer utføres av cron

når feltene for minutt, time og måned samsvarer med gjeldende tid, og minst ett av todagersfeltene (dag i måneden eller ukedagen) samsvarer med gjeldende dag.

Grunnleggende kommandoer

Liste ut eksisterende Cron-jobber

crontab -l

Vi kan liste opp alle Cron-jobbene uten å åpne crontab-konfigurasjonsfilen ved å bruke kommandoen nedenfor

[[email protected] ~]# crontab -l
no crontab for tipsbilk.net
[[email protected] ~]#

Hvis det ikke er noen eksisterende jobb, vil den returnere utdata som

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Hvis brukeren allerede har lagt til noen av jobbene vil den vises som følger.

Cron-tabellen er brukerspesifikk, noe som betyr at du må være logget inn med en spesifikk bruker for å se cron-tabelllisten.

Liste Cron for en bestemt bruker

For å liste opp planlagte jobber til en annen bruker, bruk alternativ som -u (Bruker) og -l (Liste).

crontab -u annet_brukernavn -l

Eksempel: crontab -u tipsbilk.net -l

Legg til/endre Crontab-oppføringer

For å redigere crontab-oppføringen kan vi bruke -e-alternativet som vist nedenfor.

  Hvordan installere Kali Linux-apper i Debian

crontab -e

Kommandoen ovenfor vil åpne vi editorer hvor du spesifiserer detaljene for jobben og lagrer filen. Når den er lagret, kan du bekrefte om cron er konfigurert eller ikke med crontab -l.

Legg til/endre Crontab-oppføringer for en bestemt bruker

crontab -u another_username -e

Vi kan redigere crontab for en annen bruker ved å bruke kommandoen nedenfor

Eksempel: crontab -u tipsbilk.net -e

Fjern Crontab-oppføring

Bruk parameteren -r med Crontab for å fjerne fullstendige planlagte jobber uten bekreftelse fra crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete tipsbilk.net's crontab?

Hvis du vil ha bekreftelse før du sletter planlagte jobber, bruk -i-alternativet med -r, som vil be om bekreftelse fra brukeren før du sletter brukerens crontab.

Crontab spesialstreng

Annet enn syntaksen ovenfor vi diskuterte, kan vi også bruke åtte spesialstrenger levert av Crontab. Det vil ikke bare spare tid, men det vil også forbedre lesbarheten.
Spesiell streng
Beskrivelse
@start på nytt
Kjør en gang, etter oppstart.
@årlig
Kjør en gang i året, dvs. 0 0 1 1 *
@årlig
Samme som @årlig
@månedlig
Kjør en gang i måneden, dvs. 0 0 1 * *
@ukentlig
Løp en gang i uken, dvs. 0 0 * * 0
@daglig
Løp en gang om dagen, dvs. 0 0 * * *
@midnatt
Samme som @daglig
@hver time

Løp en gang i timen, dvs. 0 * * * *

Crontab spesielle strengeksempler

1. Crontab for å planlegge oppgaver på årsbasis

@årlig /scripts/greeting.sh

Vi kan utføre over én for å sende en nyttårshilsen, den vil utføres i det første minuttet hvert år.

2. Crontab for å planlegge oppgaver som skal utføres på månedlig basis.

@monthly /scripts/cleanup.sh

Vi kan utføre ovennevnte for å utføre noen oppryddingsaktiviteter i begynnelsen av hver måned.

På samme måte kan vi bruke andre Crontab-spesialstrenger til ukentlige, daglige og timebaserte formål.

Cron Directory

  • Systemadministratoren kan bruke en systemomfattende cron-plan som kommer under den forhåndsdefinerte cron-katalogen som vist nedenfor
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Crontab sanntidseksempler

La oss diskutere noen av sanntidseksemplene som en systemadministrator eller IT-fagfolk vanligvis bruker.

Slett tomme filer og katalog

45 0 * * * tipsbilk.net finn /tmp -type f -tom -slett

Over cron expression vil finne de tomme filene og katalogen fra /tmp-katalogen, og den vil slette dem. Denne jobben vil pågå kl. 12.45 på daglig basis. Vi må nevne brukernavnet for å utføre denne jobben. I eksemplet ovenfor utfører tipsbilk.net-brukeren cron-jobboperasjon.

Utfør flere oppgaver ved å bruke en enkelt cron

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Flere oppgaver/jobber kan skilles ved hjelp av semikolon(;) og kan tilordnes til et enkelt cron-uttrykk.

Cron formatering og testverktøy

Så langt har vi diskutert kommandoer og syntaks for crontab for å planlegge en oppgave. Men hva om du ikke er systemadministrator og jobben din ikke er å sette opp Cron regelmessig, er det kanskje ikke mulig å huske syntaksen og det åpner for feil. Ikke bekymre deg, vi har en løsning på dette problemet.

Det er flere Cron-formateringsverktøy tilgjengelig på nettet.

# 1. Cron Job Generator Cron Job Generator

er en veldig brukervennlig GUI der du kan spesifisere minutt, dager og bane for skriptet for å generere crontab.

La oss ta et sanntidseksempel hvor jeg må kjøre /home/processMonitor.sh hvert 5. minutt mellom mandag til fredag.

Så jeg fikk Cron-syntaksen nedenfor som jeg kan sette i crontab ved å kjøre
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

er en nyttig nettbasert cron jobbplanlegger. Vi kan opprette en cron-jobb ved å spesifisere en URL som skal kalles, vi kan angi tidspunktet når den skal utføres. Vi kan også spesifisere et cron-uttrykk eller legge det til manuelt fra en beskrivende form. Viktigere, vi kan valgfritt bruke grunnleggende HTTP-autentisering for et lite lag med sikkerhet.

Ikke bare dette, men Easycron kan også brukes til å oppnå andre formål som standard Cron-uttrykk, Cron-jobbutførelseslogger, e-postvarsling, separate feillogger, etc.

# 3. Crontab Generator Crontab Generator

er et annet hendig verktøy for å generere crontab og med dette verktøyet kan du også legge til hvis du vil lagre cron-utdata til filen eller sende den til e-post.

# 4. Crontab Guru Crontab Guru

er en enkel online cron timeplan uttrykk editor. I tillegg gir det en nyttig måte å overvåke cronjob på. Alt vi trenger å gjøre er å kopiere en gitt kommando og legge til på slutten av crontab-definisjonen. I tilfelle cron-jobben mislykkes eller ikke en gang starter, vil du motta en e-postvarsel.

I eksemplet nedenfor vil Job utføres klokken 04:05, hver dag, hver måned og hver uke.

# 5. CRON Tester CRON tester

lar oss teste cron-tid/dato-definisjonene. Det kan være en situasjon der vi må dekode den eksisterende cron-syntaksen for feilsøking eller bare ønsker å gjøre en test.

For å gjøre det kan vi bruke dette verktøyet. Alt vi trenger å gjøre er å kopiere og lime inn cron-uttrykket vårt i cron-definisjonsfeltet, velg deretter antall iterasjoner og klikk på Test for å se de ulike datoene det vil kjøre.

La oss sjekke et av våre cron-uttrykk 4 3 */2 * * som skal kjøres 03:04(AM) annenhver dag. La oss verifisere det med cron tester.

Konklusjon Jeg håper ovenstående hjelper deg med å få en bedre forståelse av Crontab og å sette opp cron-jobber. Planlegging av jobber gjennom Cron er en av de mange oppgavene som utføres av Linux Admin. Hvis du er interessert i å lære de avanserte ferdighetene, sjekk ut dennekurs

.