Crontab i Linux: Job Scheduling EXEMPEL

โšก Smart sammanfattning

Crontab i Linux schemalรคgger kommandon att kรถras automatiskt vid fasta tider, datum eller intervall med hjรคlp av cron-daemonen, vilket lรฅter administratรถrer automatisera sรคkerhetskopior, loggrensning, aviseringar och rutinmรคssigt systemunderhรฅll utan manuell รฅtgรคrd.

  • โฐ Cron-daemonen: Cron-bakgrundsprocessen lรคser crontab-filer och kรถr varje schemalagt jobb exakt vid den minut du anger.
  • ๐Ÿ—‚๏ธ Crontab-format: Fem tidsfรคlt โ€“ minut, timme, mรฅnadsdatum, mรฅnad och veckodag โ€“ fรถregรฅr kommandot som ska kรถras.
  • โœ๏ธ Redigeringsjobb: Anvรคnd crontab -e fรถr att lรคgga till eller รคndra jobb, crontab -l fรถr att lista dem och crontab -r fรถr att ta bort dem.
  • ๐Ÿ” Speciella strรคngar: Genvรคgar som @reboot, @daily, @weekly och @hourly ersรคtter de fem tidsfรคlten fรถr vanliga scheman.
  • ๐Ÿ“… Praktiska exempel: Fรคrdiga poster tรคcker var femte minut, specifika veckodagar, mรฅnatliga kรถrningar och startuppgifter.
  • ๐Ÿค– AI-hjรคlp: AI-assistenter och GitHub Copilot kan generera och fรถrklara cron-uttryck pรฅ nรฅgra sekunder.

Crontab i Linux jobbschemalรคggning med exempel

Crontab, fรถrkortning fรถr cron-tabell, รคr konfigurationsfilen och kommandot som driver Linux jobbschemalรคggning. Avsnitten nedan fรถrklarar crontab-formatet, kommandona fรถr att lรคgga till, lista och ta bort jobb, de speciella @-strรคngarna och exempel pรฅ schemalรคggning som รคr fรคrdiga att anvรคnda.

Vad รคr crontab?

Cron รคr uppkallat efter det grekiska ordet "Chronos", som betyder tid. Det รคr en systemprocess (en daemon) som automatiskt utfรถr uppgifter enligt ett fast schema. Cron รคr en uppsรคttning kommandon som anvรคnds fรถr att kรถra regelbundna schemalagda uppgifter. Crontab stรฅr fรถr "cron-tabell", och det lรฅter dig anvรคnda cron-jobbschemalรคggaren fรถr att utfรถra dessa uppgifter.

Crontab รคr ocksรฅ namnet pรฅ programmet som anvรคnds fรถr att redigera det schemat. Det drivs av en crontab-fil โ€“ en konfigurationsfil som listar de shell-kommandon som ska kรถras regelbundet enligt det angivna schemat.

Varfรถr anvรคnda Cron-jobb?

Hรคr รคr de frรคmsta anledningarna till att anvรคnda cron-jobb i Linux:

  • Tar schemalagda sรคkerhetskopior av loggfiler eller databaser.
  • Tar bort gamla loggfiler automatiskt.
  • Archiraderar och rensar databastabeller.
  • Skickar e-postmeddelanden med aviseringar, till exempel nyhetsbrev eller pรฅminnelser om lรถsenordsutgรฅng.
  • Utfรถr regelbunden rensning av cachade data.
  • Automatiserar repetitiva Unix- och Linux-jobb.
  • Automatiserar rutinmรคssigt systemunderhรฅll.

Hur anvรคnder man cron i Linux?

Linux-systempaketet innehรฅller en anvรคndbar uppgiftsschemalรคggare som heter crontab. Crontab รคr populรคrt eftersom ett jobb kan schemalรคggas att kรถras som root-anvรคndare, vilket gรถr automatiserade systemรคndringar enklare. Du รคndrar helt enkelt uppgiften en gรฅng och vรคntar sedan tills den utlรถses igen enligt schemat.

Linux Crontab-format

En Linux crontab-post har sex fรคlt. De fรถrsta fem fรคlten anger tid och datum fรถr kรถrningen, och det sjรคtte fรคltet innehรฅller kommandot att kรถra.

Crontab-syntax:

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

Diagrammet nedan mappar varje asterisk i en crontab-post till det fรคlt den kontrollerar, frรฅn minut till veckodag, fรถljt av kommandot som ska kรถras.

Linux crontab-formatdiagram som visar de fem tidsfรคlten och kommandot

De fem tidsfรคlten accepterar dessa vรคrden: minut (0โ€“59), timme (0โ€“23), veckodag (1โ€“31), mรฅnad (1โ€“12 eller janโ€“dec) och veckodag (0โ€“7, dรคr 0 och 7 bรฅda betyder sรถndag). Du styr varje fรคlt med dessa specialtecken:

  • Asterisk (*): Matchar alla mรถjliga vรคrden fรถr det fรคltet.
  • Definiera ett intervall: Anvรคnd ett bindestreck fรถr att ange ett intervall, till exempel 1โ€“10, 30โ€“40, janโ€“mar eller mรฅnโ€“ons.
  • Definiera flera intervall: Anvรคnd kommatecken fรถr att kombinera intervall, till exempel apr-juni, okt-dec.

Hur man lรคgger till/รคndrar Crontab

Anvรคndare kan redigera sina egna crontab-jobb med fรถljande crontab-kommando. Alternativet -u riktar sig till en specifik anvรคndares crontab, sรฅ ange anvรคndarnamnet som visas i de senare exemplen:

$ crontab -u -e 

Kommandot ovan รถppnar den personliga crontab-konfigurationen fรถr ditt system, som du kan redigera i din standardtextredigerare.

Du behรถver inte starta om cron; den hรคmtar dina รคndringar automatiskt. Fรถr att se dina aktuella jobb, anvรคnd:

$ crontab -l

Fรถr att ta bort dina crontab-uppgifter, anvรคnd fรถljande kommando:

$ crontab -r

Fรถr att lรคgga till eller uppdatera ett jobb i crontab, anvรคnd kommandot nedan:

crontab -e

Fรถr att redigera en annan anvรคndares crontab, namnge anvรคndaren med alternativet -u:

crontab -u username -e

Hur man listar Crontab

Fรถr att visa crontab-posterna fรถr den aktuella anvรคndaren:

crontab -l

Fรถr att visa crontab-posterna fรถr en specifik anvรคndare:

crontab -u username -l

Viktiga Crontab-exempel

Hรคr รคr nรฅgra viktiga, fรคrdiga exempel pรฅ crontab-scheman:

BESKRIVNING Kommando
Kรถr de olika schemalรคggningsjobben. Kommandot nedan kรถrs dagligen klockan 07:00 och 17:00.
0 7,17 * * * /scripts/script.sh
Kรถr ett cron-jobb var 5:e minut.
*/5* * * * *  /scripts/script.sh
Utfรถr uppgiften varje Monday klockan 5 pรฅ morgonen. Detta รคr praktiskt fรถr veckovisa uppgifter som systemrensning.
0 5 * * mon  /scripts/script.sh
Kรถr ditt skript med 3 minuters intervall.
*/3 * * * * /scripts/monitor.sh
Schemalรคgger ett cron-jobb som kรถrs under specifika mรฅnader โ€” hรคr, februari, juni och september.
* * * feb,jun,sep *  /script/script.sh
Kรถrs pรฅ valda dagar. Detta exempel kรถrs varje Monday och onsdag klockan 5.
0 17 * * mon,wed  /script/script.sh
Tillรฅter att cron kรถrs den fรถrsta lรถrdagen i varje mรฅnad.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Kรถr ett skript med 6 timmars mellanrum, konfigurerat enligt nedan.
0 */6 * * * /scripts/script.sh
Schemalรคgger en uppgift att kรถras tvรฅ gรฅnger Monday och tisdag. Anvรคnd fรถljande instรคllningar fรถr att gรถra det.
0 4,17 * * mon,tue /scripts/script.sh
Schemalรคgger ett cron-jobb att kรถras var 15:e sekund.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Schemalรคgger uppgifter รฅrligen. @yearly liknar "0 0 1 1 *". Den kรถr uppgiften en gรฅng om รฅret vid midnatt den 1 januari โ€“ praktiskt fรถr nyรฅrshรคlsningar.
@yearly /scripts/script.sh 
Kรถr uppgifter mรฅnadsvis. @monthly liknar "0 0 1 * *". Den kรถr uppgiften vid midnatt den fรถrsta dagen i varje mรฅnad.
@monthly /scripts/script.sh
Utfรถr flera uppgifter med en enda cron-post.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Schemalรคgger uppgifter veckovis. @weekly liknar "0 0 * * 0". Den kรถr veckovisa uppgifter som systemrensning vid midnatt varje sรถndag.
@weekly /bin/script.sh
Schemalรคgger uppgifter dagligen. @daily liknar "0 0 * * *". Den kรถr uppgiften en gรฅng om dagen vid midnatt.
@daily /scripts/script.sh
Kรถr uppgifter varje timme. @hourly liknar "0 * * * *". Den kรถr uppgiften i bรถrjan av varje timme.
@hourly /scripts/script.sh
Kรถr uppgifter vid omstart av systemet. @reboot รคr anvรคndbart fรถr uppgifter som systemet ska kรถra vid start, vilket gรถr att bakgrundsjobb startas automatiskt.
@reboot /scripts/script.sh

Vanliga frรฅgor

Anvรคndarens crontabbar lagras i /var/spool/cron/ (eller /var/spool/cron/crontabs/ pรฅ Debian och Ubuntu), medan det systemomfattande schemat finns i /etc/crontab och katalogen /etc/cron.d. Redigera alltid anvรคndar-crontabbfiler med crontab -e istรคllet fรถr att รถppna dessa filer direkt.

Cron kรถr bara jobb vid exakt deras schemalagda tid och hoppar รถver dem om maskinen รคr avstรคngd. tractar bort missade jobb och kรถr dem nรคr systemet รคr pรฅslaget igen, sรฅ det passar bรคrbara och stationรคra datorer som inte alltid รคr igรฅng.

Cron anvรคnder en minimal miljรถ, sรฅ en begrรคnsad PATH รคr den vanliga orsaken. Anvรคnd absoluta sรถkvรคgar fรถr kommandon och skript, gรถr skriptet kรถrbart och omdirigera utdata till en loggfil sรฅ att du kan fรฅnga upp eventuella fel fรถr felsรถkning.

Lรคgg till >> /path/to/logfile 2>&1 till kommandot fรถr att fรฅnga standardutdata och fel i en fil. Alternativt kan du stรคlla in variabeln MAILTO hรถgst upp i crontabben sรฅ att cron skickar utdata fรถr varje jobb till den adressen via e-post.

Filerna /etc/cron.allow och /etc/cron.deny styr รฅtkomsten. Om cron.allow finns fรฅr endast de anvรคndare som listas i den anvรคnda crontab. Om endast cron.deny finns fรฅr alla anvรคndare utom de som listas schemalรคgga jobb.

En anvรคndar-crontab skapad med crontab -e har fem tidsfรคlt fรถljt av kommandot. Systemfilen /etc/crontab lรคgger till ett fรคlt som namnger anvรคndaren som kรถr jobbet, lรคser minut, timme, dag, mรฅnad, veckodag, anvรคndare och sedan kommandot.

Ja. Maskininlรคrningsverktyg kan baslinjeberรคkna normala jobbkรถrningstider och slutfรถrandetider, och sedan flagga avvikelser som ett jobb som kรถrs fรถr lรคnge, misslyckas tyst eller missar sitt schema. AI-logganalys grupperar ocksรฅ relaterade fel fรถr att pรฅskynda arbetet med grundorsaker.

Ja. GitHub Copilot kan generera cron-uttryck frรฅn en kommentar pรฅ vanligt sprรฅk, fรถrklara vad ett schema som */5 * * * * gรถr och utarbeta ett shell-skript som ett jobb kรถr. Testa alltid uttrycket innan du lรคgger till det i en produktions-crontab.

Sammanfatta detta inlรคgg med: