La oss utforske crontab, dets funksjoner og de ulike operasjonene som er knyttet til Crontab.
Vi skal se på hvordan du planlegger oppgaver ved hjelp av cron-verktøyet, og til slutt vil vi også undersøke noen nettbaserte hjelpemidler som bistår med formatering og verifisering av cron-kommandoer.
Opprinnelse
Crontab står for «cron table». Ordet cron har sin rot i det greske ordet Chronos, som betyr tid. Crontab er en systemprosess som automatisk gjennomfører definerte oppgaver og handlinger i henhold til et forhåndsbestemt tidsskjema.
Anvendelsesområder
Crontab er anvendelig for å utføre en rekke oppgaver, som automatisert sikkerhetskopiering, rotering av loggfiler, synkronisering av data mellom ulike servere, og sletting av midlertidige filer. Crontab kan brukes til mange typer arbeid, men det er spesielt nyttig innen systemadministrasjon.
Ved å benytte cron kan en administrator planlegge utførelse av en oppgave på et spesifikt tidspunkt og en bestemt dag.
La oss nå se hvordan vi konfigurerer dette.
Crontab-syntaks
For å utføre en sekvens av kommandoer, leser cron-verktøyet konfigurasjonsfiler. For å tolke linjene i crontab-konfigurasjonstabellene, følger det en Crontab-syntaks. Crontab består av seks felter, der de fem første (1-5) spesifiserer dato og klokkeslett for utførelse. Det siste feltet, det sjette, kan være et brukernavn og/eller oppgaven/jobben/kommandoen/skriptet som skal kjøres.
* * * * * BRUKERNAVN KOMMANDO/SKRIPT SOM SKAL UTFØRES
│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ 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 å representere alle mulige verdier for et felt. For eksempel vil en stjerne i timefeltet indikere hver time, og en stjerne i månedsfeltet vil tilsvare hver måned.
Brukernavn er valgfritt (kun tilgjengelig i systemets crontab-fil)
Eksempler:
La oss illustrere syntaksen med noen eksempler:
0 5 * * * /scripts/job.sh
1. Planlegg en cron som utføres kl. 05.00 hver dag.
0 6,18 * * * /scripts/job.sh
2. Planlegg en cron som utføres to ganger daglig, kl. 06.00 og 18.00.
* * * * * /scripts/job.sh
3. Planlegg en cron som utføres hvert minutt.
0 19 * * mon /scripts/job.sh
4. Planlegg en cron som utføres hver mandag kl. 19.00.
*/10 * * * * /scripts/job.sh
5. Planlegg en cron som utføres hvert tiende minutt.
* * * feb,jun,oct * /script/job.sh
6. Planlegg en cron som utføres i spesifikke måneder.
25 7 4 3 * /home/script/backup.sh
7. Kjør skriptet /home/script/backup.sh den 4. mars kl. 07:25.
8. Planlegg en cron som utføres hvert 30. sekund.
- Siden Crontab ikke direkte støtter sekunder, kan vi implementere dette med en todelt prosess.
* * * * * /home/scripts/script.sh
- La oss først planlegge en oppgave som kjører hvert minutt.
* * * * * sleep 30; /home/scripts/script.sh
Vi bruker nå sleep-kommandoen for å stoppe utførelsen i 30 sekunder.
Oppgaven ovenfor vil stoppe i 30 sekunder før den fortsetter.
Typer Cron-konfigurasjonsfiler
Det finnes to hovedtyper av Cron-konfigurasjonsfiler:
UNIX/Linux system Crontab
Denne krever root-tilgang, da den ofte brukes for systemtjenester og viktige oppgaver. Det sjette feltet (i syntaksbeskrivelsen over) er navnet på brukeren som kommandoen skal utføres som. Dette gjør at systemets crontab kan utføre kommandoer som en hvilken som helst bruker.
Bruker Crontab
En bruker kan også opprette egne cron-jobber ved hjelp av crontab-kommandoen. Her er det sjette feltet (i syntaksbeskrivelsen over) kommandoen som skal utføres, og alle kommandoer kjøres som den brukeren som opprettet crontab. Hver bruker kan ha sin egen crontab-fil, som lagres i /var/spool/cron/crontabs, men de skal ikke redigeres direkte. Vi må bruke crontab-kommandoen for å endre eller opprette egne cron-jobber.
Hvordan fungerer det? Cron-tjenesten (daemon) kjører i bakgrunnen og kontrollerer kontinuerlig (hvert minutt) /etc/crontab-filen og /etc/cron.*/-katalogene, i tillegg til /var/spool/cron/. Kommandoer utføres av cron
når feltene for minutt, time og måned stemmer overens med nåværende tid, og minst ett av de to dagsfeltene (dag i måneden eller ukedag) samsvarer med nåværende dag.
Grunnleggende kommandoer
Liste eksisterende Cron-jobber
crontab -l
Vi kan se alle cron-jobbene uten å åpne konfigurasjonsfilen ved hjelp av kommandoen under.
[[email protected] ~]# crontab -l no crontab for tipsbilk.net [[email protected] ~]#
Hvis det ikke finnes noen eksisterende jobber, returneres:
[[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 jobber, vil de vises slik.
Cron-tabellen er brukerspesifikk, som betyr at du må være logget inn med den spesifikke brukeren for å se cron-tabelllisten.
Liste Cron for en bestemt bruker
For å vise de planlagte jobbene for en annen bruker, bruk -u (Bruker) og -l (Liste) som følger.
crontab -u annen_bruker -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.
crontab -e
Kommandoen ovenfor vil åpne en teksteditor der du kan spesifisere detaljene for jobben og lagre filen. Når den er lagret, kan du verifisere om cron er konfigurert med crontab -l.
Legg til/endre Crontab-oppføringer for en bestemt bruker
crontab -u annen_bruker -e
Vi kan redigere crontab for en annen bruker med kommandoen under.
Eksempel: crontab -u tipsbilk.net -e
Fjern Crontab-oppføring
Bruk parameteren -r med Crontab for å fjerne alle planlagte jobber uten bekreftelse.
crontab -r
crontab -i -r
[[email protected] ~]# crontab -i -r crontab: really delete tipsbilk.net's crontab?
For å få bekreftelse før du sletter planlagte jobber, bruk -i-alternativet med -r, som vil be om bekreftelse fra brukeren før brukerens crontab slettes.
Crontab spesialstrenger
I tillegg til syntaksen vi har diskutert, kan vi også benytte åtte spesialstrenger som Crontab tilbyr. Disse kan spare tid og forbedre lesbarheten.
Spesialstreng
Beskrivelse
@reboot
Kjør en gang, ved oppstart.
@yearly
Kjør en gang i året, dvs. 0 0 1 1 *
@annually
Samme som @yearly
@monthly
Kjør en gang i måneden, dvs. 0 0 1 * *
@weekly
Kjør en gang i uken, dvs. 0 0 * * 0
@daily
Kjør en gang om dagen, dvs. 0 0 * * *
@midnight
Samme som @daily
@hourly
Kjør en gang i timen, dvs. 0 * * * *
Crontab spesielle streng eksempler
1. Crontab for å planlegge oppgaver årlig:
@yearly /scripts/greeting.sh
Kommandoen over kan brukes til å sende en nyttårshilsen; den vil utføres i første minutt hvert år.
2. Crontab for å planlegge oppgaver månedlig:
@monthly /scripts/cleanup.sh
Dette kan brukes til å gjennomføre opprydningsaktiviteter ved starten av hver måned.
Tilsvarende kan vi benytte andre Crontab-spesialstrenger for ukentlige, daglige og timebaserte aktiviteter.
Cron Directory
- Systemadministratorer kan bruke systemomfattende cron-planer som plasseres i de forhåndsdefinerte cron-katalogene vist nedenfor:
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
/etc/cron.weekly
Crontab sanntidseksempler
La oss se på noen eksempler systemadministratorer og IT-profesjonelle vanligvis bruker.
Slett tomme filer og kataloger
45 0 * * * tipsbilk.net finn /tmp -type f -tom -slett
Cron-uttrykket over vil finne tomme filer og kataloger i /tmp-katalogen og slette dem. Denne jobben vil gå kl. 00.45 hver dag. Vi må spesifisere brukernavnet for at jobben skal kunne kjøres. I eksemplet over utfører brukeren tipsbilk.net cron-jobboperasjonen.
Utfør flere oppgaver med én cron
* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh
Flere oppgaver/jobber kan skilles med semikolon (;) og knyttes til ett enkelt cron-uttrykk.
Cron formatering og testverktøy
Så langt har vi diskutert kommandoer og syntaks for crontab for å planlegge oppgaver. Men hva om du ikke er systemadministrator og ikke setter opp Cron regelmessig? Det kan være vanskelig å huske syntaksen, noe som lett kan føre til feil. Heldigvis finnes det løsninger på dette problemet.
Det finnes flere nettbaserte Cron-formateringsverktøy tilgjengelig.
# 1. Cron Job Generator Cron Job Generator
er et brukervennlig grafisk grensesnitt der du kan spesifisere minutt, dager og sti til skriptet for å generere crontab.
La oss ta et eksempel der jeg skal kjøre /home/processMonitor.sh hvert 5. minutt, fra mandag til fredag.
Jeg fikk følgende Cron-syntaks, som jeg kan legge inn 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, og tidspunktet for utførelse. Vi kan også angi et cron-uttrykk eller legge det inn manuelt fra en beskrivende form. Viktigst av alt er at vi valgfritt kan legge til grunnleggende HTTP-autentisering for et ekstra sikkerhetslag.
I tillegg kan Easycron også brukes til andre formål, som standard Cron-uttrykk, logger for cron-jobbkjøringer, e-postvarsler og separate feillogger.
# 3. Crontab Generator Crontab Generator
er et annet nyttig verktøy for å generere crontab. Med dette verktøyet kan du også velge å lagre cron-utdata i en fil eller sende det på e-post.
# 4. Crontab Guru Crontab Guru
er en enkel, nettbasert editor for cron-tidsplanuttrykk. Den tilbyr også en praktisk måte å overvåke cron-jobber. Alt du trenger å gjøre er å kopiere en gitt kommando og legge den til i slutten av crontab-definisjonen. Hvis cron-jobben mislykkes eller ikke starter, mottar du en e-postvarsling.
I eksemplet nedenfor vil jobben utføres kl. 04:05, hver dag, hver måned og hver uke.
# 5. CRON Tester CRON tester
lar oss teste cron-tids/datodefinisjoner. Det kan være situasjoner der vi må dekode en eksisterende cron-syntaks for feilsøking eller bare ønsker å teste den.
For å gjøre det, kan vi bruke dette verktøyet. Bare kopier og lim inn cron-uttrykket i cron-definisjonsfeltet, velg antall iterasjoner og klikk på Test for å se datoene jobben vil kjøre.
La oss sjekke cron-uttrykket 4 3 */2 * *, som skal kjøre 03:04 (AM) annenhver dag. La oss verifisere det med cron tester.
.