Crontab i Linux: Jobplanlægning EKSEMPLER

⚡ Smart opsummering

Crontab i Linux planlægger kommandoer til at køre automatisk på faste tidspunkter, datoer eller intervaller ved hjælp af cron-daemonen, hvilket giver administratorer mulighed for at automatisere sikkerhedskopier, logoprydning, notifikationer og rutinemæssig systemvedligeholdelse uden manuel indgriben.

  • ⏰ Cron-dæmon: Cron-baggrundsprocessen læser crontab-filer og kører hvert planlagt job på præcis det minut, du angiver.
  • 🗂️ Crontab-format: Fem tidsfelter — minut, time, månedsdag, måned og ugedag — går forud for kommandoen om at køre.
  • ✍️ Redigeringsjob: Brug crontab -e til at tilføje eller ændre job, crontab -l til at vise dem, og crontab -r for at fjerne dem.
  • 🔁 Specielle strenge: Genveje som @reboot, @daily, @weekly og @hourly erstatter de fem tidsfelter for almindelige tidsplaner.
  • 📅 Praktiske eksempler: Færdiglavede poster dækker hvert femte minut, specifikke hverdage, månedlige kørsler og opstartsopgaver.
  • 🤖 AI assistance: AI-assistenter og GitHub Copilot kan generere og forklare cron-udtryk på få sekunder.

Crontab i Linux jobplanlægning med eksempler

Crontab, en forkortelse for cron-tabel, er den konfigurationsfil og kommando, der driver Linux Jobplanlægning. Afsnittene nedenfor forklarer crontab-formatet, kommandoerne til at tilføje, vise og fjerne job, de særlige @-strenge og brugsklare planlægningseksempler.

Hvad er crontab?

Cron er opkaldt efter det græske ord "Chronos", der betyder tid. Det er en systemproces (en dæmon), der automatisk udfører opgaver efter en fastlagt tidsplan. Cron er et sæt kommandoer, der bruges til at køre regelmæssigt planlagte opgaver. Crontab står for "cron-tabel", og det giver dig mulighed for at bruge cron-jobplanlæggeren til at udføre disse opgaver.

Crontab er også navnet på det program, der bruges til at redigere den pågældende tidsplan. Det drives af en crontab-fil - en konfigurationsfil, der viser de shell-kommandoer, der skal køres periodisk på den angivne tidsplan.

Hvorfor bruge Cron-job?

Her er de vigtigste grunde til at bruge cron-jobs i Linux:

  • Tager planlagte sikkerhedskopier af logfiler eller databaser.
  • Sletter automatisk gamle logfiler.
  • Archisletter og renser databasetabeller.
  • Sender e-mails med notifikationer, f.eks. nyhedsbreve eller påmindelser om udløb af adgangskoder.
  • Udfører regelmæssig oprydning af cachelagrede data.
  • Automatiserer gentagne Unix- og Linux-job.
  • Automatiserer rutinemæssig systemvedligeholdelse.

Hvordan bruger man cron i Linux?

Linux-systempakken indeholder en nyttig opgaveplanlægger ved navn crontab. Crontab er populær, fordi et job kan planlægges til at køre som root-brugeren, hvilket gør automatiserede systemændringer nemmere. Du ændrer blot opgaven én gang og venter derefter, indtil den udløses igen efter planen.

Linux Crontab-format

En Linux crontab-post har seks felter. De første fem felter definerer tidspunktet og datoen for udførelse, og det sjette felt indeholder kommandoen til at køre.

Crontab syntaks:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Diagrammet nedenfor knytter hver stjerne i en crontab-post til det felt, den kontrollerer, fra minut til ugedag, efterfulgt af kommandoen, der skal udføres.

Linux crontab-formatdiagram, der viser de fem tidsfelter og kommandoen

De fem tidsfelter accepterer disse værdier: minut (0-59), time (0-23), månedsdag (1-31), måned (1-12 eller jan-dec) og ugedag (0-7, hvor 0 og 7 begge betyder søndag). Du styrer hvert felt med disse specialtegn:

  • Stjerne (*): Matcher alle mulige værdier for det pågældende felt.
  • Definer et interval: Brug en bindestreg til at angive et interval, f.eks. 1-10, 30-40, jan-mar eller man-ons.
  • Definer flere områder: Brug kommaer til at kombinere intervaller, f.eks. apr-juni, okt-dec.

Sådan tilføjes/ændres Crontab

Brugere kan redigere deres egne crontab-job med følgende crontab-kommando. -u-indstillingen er rettet mod en specifik brugers crontab, så angiv brugernavnet som vist i de senere eksempler:

$ crontab -u -e 

Kommandoen ovenfor åbner den personlige crontab-konfiguration for dit system, som du kan redigere i din standard teksteditor.

Det er ikke nødvendigt at genstarte cron; den registrerer dine ændringer automatisk. For at se dine aktuelle job skal du bruge:

$ crontab -l

For at fjerne dine crontab-opgaver skal du bruge følgende kommando:

$ crontab -r

For at tilføje eller opdatere et job i crontab'en skal du bruge kommandoen nedenfor:

crontab -e

For at redigere en anden brugers crontab, skal du navngive brugeren med -u-indstillingen:

crontab -u username -e

Sådan listes Crontab

Sådan ser du crontab-posterne for den aktuelle bruger:

crontab -l

Sådan ser du crontab-posterne for en bestemt bruger:

crontab -u username -l

Vigtige Crontab-eksempler

Her er nogle vigtige, brugsklare eksempler på crontab-skemaer:

Beskrivelse Kommando
Kører de forskellige planlægningsjob. Kommandoen nedenfor udføres dagligt kl. 7 og 5.
0 7,17 * * * /scripts/script.sh
Udfører et cron-job hvert 5. minut.
*/5* * * * *  /scripts/script.sh
Udfører opgaven hver Monday kl. 5. Dette er nyttigt til ugentlige opgaver som f.eks. systemoprydning.
0 5 * * mon  /scripts/script.sh
Kører dit script med 3 minutters interval.
*/3 * * * * /scripts/monitor.sh
Planlægger et cron-job, der udføres i bestemte måneder — her, februar, juni og september.
* * * feb,jun,sep *  /script/script.sh
Udføres på udvalgte dage. Dette eksempel kører hver Monday og onsdag kl. 5.
0 17 * * mon,wed  /script/script.sh
Tillader cron at udføres den første lørdag i hver måned.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Kører et script med 6 timers mellemrum, konfigureret som nedenfor.
0 */6 * * * /scripts/script.sh
Planlægger en opgave til at udføre to gange Monday og tirsdag. Brug følgende indstillinger til at gøre det.
0 4,17 * * mon,tue /scripts/script.sh
Planlægger et cron-job til at udføres hvert 15. sekund.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Planlægger opgaver årligt. @yearly minder om "0 0 1 1 *". Den kører opgaven én gang om året ved midnat den 1. januar – praktisk til nytårshilsner.
@yearly /scripts/script.sh 
Kører opgaver månedligt. @monthly svarer til "0 0 1 * *". Den kører opgaven ved midnat på den første dag i hver måned.
@monthly /scripts/script.sh
Udfører flere opgaver ved hjælp af en enkelt cron-post.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Planlægger opgaver ugentligt. @weekly svarer til "0 0 * * 0". Den kører ugentlige opgaver såsom systemoprydning ved midnat hver søndag.
@weekly /bin/script.sh
Planlægger opgaver dagligt. @daily svarer til "0 0 * * *". Den kører opgaven én gang om dagen ved midnat.
@daily /scripts/script.sh
Kører opgaver på timebasis. @hourly svarer til "0 * * * *". Den kører opgaven i starten af ​​hver time.
@hourly /scripts/script.sh
Kører opgaver ved systemgenstart. @reboot er nyttig til opgaver, som systemet skal køre ved opstart, så baggrundsjob starter automatisk.
@reboot /scripts/script.sh

Ofte Stillede Spørgsmål

Bruger-crontabs gemmes i /var/spool/cron/ (eller /var/spool/cron/crontabs/ på Debian og Ubuntu), mens den systemomfattende tidsplan findes i /etc/crontab og mappen /etc/cron.d. Rediger altid brugerens crontabs med crontab -e i stedet for at åbne disse filer direkte.

Cron kører kun job på det præcise planlagte tidspunkt og springer dem over, hvis maskinen er slukket. tracgenkender mistede job og kører dem, når systemet er tændt igen, så det passer til bærbare og stationære computere, der ikke altid kører.

Cron bruger et minimalt miljø, så en begrænset PATH er den sædvanlige årsag. Brug absolutte stier til kommandoer og scripts, gør scriptet eksekverbart, og omdiriger output til en logfil, så du kan registrere eventuelle fejl til fejlfinding.

Tilføj >> /path/to/logfile 2>&1 til kommandoen for at registrere standardoutput og fejl i en fil. Alternativt kan du indstille MAILTO-variablen øverst i crontab'en, så cron sender outputtet fra hvert job til den adresse via e-mail.

Filerne /etc/cron.allow og /etc/cron.deny styrer adgang. Hvis cron.allow findes, er det kun de brugere, der er angivet i den, der må bruge crontab. Hvis kun cron.deny findes, har alle brugere undtagen de anførte tilladelse til at planlægge job.

En bruger-crontab oprettet med crontab -e har fem tidsfelter efterfulgt af kommandoen. Systemfilen /etc/crontab tilføjer et felt, der navngiver den bruger, der kører jobbet, læser minut, time, dag, måned, ugedag, bruger og derefter kommandoen.

Ja. Maskinlæringsværktøjer kan baseline normale jobkørselstider og færdiggørelsestider og derefter markere anomalier såsom et job, der kører for længe, ​​fejler lydløst eller overskrider sin tidsplan. AI-loganalyse grupperer også relaterede fejl for at fremskynde arbejdet med rodårsagerne.

Ja. GitHub Copilot kan generere cron-udtryk fra en kommentar på almindeligt engelsk, forklare hvad en tidsplan som */5 * * * * gør, og udarbejde et shell-script, som et job kører. Test altid udtrykket, før du tilføjer det til en produktions-crontab.

Opsummer dette indlæg med: