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.
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.
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
|


