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.

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

