Cron (crontab): Unix/Linux-opgaveplanlægning og automatisering
Lær Cron og crontab: effektiv Unix/Linux-opgaveplanlægning og automatisering. Opsæt, planlæg og automatiser vedligehold, backups og scripts nemt og sikkert.
Cron er et computerprogram, der kan bruges til at få en computer til at udføre opgaver med bestemte tidsintervaller. Det bruges i UNIX-computerstyresystemer og styresystemer, der ligner UNIX, som f.eks. Linux.
Cron kan bruges til at planlægge de fleste gentagende opgaver. Det bruges ofte til at automatisere opgaver i forbindelse med vedligeholdelse eller administration af en computer eller et computernetværk, selv om det kan bruges til mange andre opgaver som f.eks. at hente filer fra internettet og hente e-mail på bestemte tidspunkter eller datoer.
Navnet på computerprogrammet cron stammer fra ordet cron, som kommer fra det græske ord for tid, χρόνος (chronos).
Cron konfigureres ved at redigere en fil kaldet crontab (crontab). Denne fil indeholder en liste over de specifikke opgaver, som computeren skal køre, og hvornår opgaverne skal køres.
Grundlæggende opbygning af en crontab-linje
En almindelig crontab-linje har fem tidsfelter efterfulgt af kommandoen, som skal køres:
minut time dag-i-måned måned dag-i-uge kommando Forklaring:
- minut: 0–59
- time: 0–23
- dag-i-måned: 1–31
- måned: 1–12 eller forkortede navne som jan,feb osv.
- dag-i-uge: 0–7 (både 0 og 7 kan være søndag) eller forkortede navne som mon,tue osv.
Eksempler på specialtegn:
- * = enhver værdi (fx alle minutter)
- - = interval (fx 1-5)
- , = liste (fx 1,15,30)
- / = trin (fx */15 betyder hvert 15. minut)
Specielle tidsnavne
Cron understøtter også nogle praktiske aliaser som erstatning for de fem felter:
- @reboot — kør ved opstart
- @yearly eller @annually — en gang om året
- @monthly — en gang om måneden
- @weekly — en gang om ugen
- @daily — en gang om dagen
- @hourly — en gang i timen
Eksempler
# Kør et backup-script hver dag kl. 02:30 30 2 * * * /usr/local/bin/backup.sh # Kør et script hver 15. minut */15 * * * * /usr/local/bin/check.sh # Kør ved opstart @reboot /usr/local/bin/startup-task.sh # Send output til logfil (vigtigt at bruge absolutte stier) 0 3 * * * /usr/local/bin/task.sh >> /var/log/task.log 2>&1 Brug og administration
- Rediger brugerens crontab: crontab -e (åbner editor; hver bruger har sin egen crontab).
- Vis crontab: crontab -l
- Slet crontab: crontab -r
- Systemcrontab: /etc/crontab og filer i /etc/cron.d/ har ofte et ekstra felt til at angive hvilken bruger opgaven skal køres som.
Miljø og gode vaner
- Cron kører kommandoer med et meget begrænset miljø: sæt altid absolutte stier til kommandoer og filer (fx /usr/bin/python, ikke bare python).
- Angiv relevante miljøvariabler i toppen af crontab, fx PATH, SHELL eller MAILTO for at modtage output via e-mail.
- Håndter output: hvis du ikke ønsker mails, omdiriger output til /dev/null:
... >/dev/null 2>&1. - Sørg for at scripts er eksekverbare (chmod +x) og bruger korrekte shebang-linjer (fx #!/bin/bash).
- Brug låse (flock eller lignende) hvis samme opgave ikke må køre overlappende.
Fejlfinding og logs
- På Debian/Ubuntu logges cron ofte i /var/log/syslog (søg efter "CRON").
- På Red Hat/CentOS findes ofte /var/log/cron.
- Hvis en opgave ikke kører, tjek crontab-syntaks, filrettigheder, absolutte stier og miljøvariabler.
- Husk at timezone og sommertid kan påvirke, hvornår job køres.
Sikkerhed og begrænsninger
- Undgå at opbevare adgangskoder i crontab. Brug sikre nøglebaserede metoder eller credential stores.
- Begræns hvem der kan bruge cron via /etc/cron.allow og /etc/cron.deny (hvis systemet understøtter det).
- Kør ikke ukendt kode som root — overvej at specificere en mindre privilegeret bruger i systemcrontab eller brug sudo med omhu.
Alternativer og tillæg
- Anacron: til maskiner, der ikke kører 24/7; sørger for at daglige/ugentlige job køres selvom maskinen var slukket på planlagt tid.
- systemd timers: moderne alternative i systemd-baserede systemer, som tilbyder bedre timing, afhængigheder og fleksibilitet.
- Der findes også avancerede jobplanlæggere til store miljøer (fx Jenkins, Airflow) når man har komplekse afhængigheder eller behov for workflow-styring.
Med disse oplysninger kan du komme godt i gang med at planlægge og automatisere gentagne opgaver ved hjælp af cron. Husk altid at teste dine crontab-kommandoer manuelt først og bruge absolutte stier og passende logging, så du kan opdage og rette fejl hurtigt.
Spørgsmål og svar
Q: Hvad er Cron?
A: Cron er et computerprogram, der bruges til at planlægge opgaver med bestemte tidsintervaller.
Q: Hvor bliver Cron brugt?
A: Cron bruges i UNIX-computeroperativsystemer og operativsystemer, der ligner UNIX, som Linux.
Q: Hvilken slags opgaver kan planlægges med Cron?
A: De fleste gentagne opgaver kan planlægges med Cron. Det bruges ofte til at automatisere opgaver i forbindelse med vedligeholdelse eller administration af en computer eller et computernetværk, men det kan også bruges til mange andre opgaver som at downloade filer fra internettet og downloade e-mail på bestemte tidspunkter eller datoer.
Q: Hvor kommer navnet Cron fra?
A: Navnet på computerprogrammet Cron kommer fra ordet cron, som er fra det græske ord for tid, χρόνος (chronos).
Q: Hvordan er Cron sat op?
A: Cron sættes op ved at redigere en fil kaldet crontab (cron-tabel). Denne fil lister de specifikke opgaver, som computeren skal køre, og hvornår opgaverne skal køres.
Q: Hvad er en crontab?
A: En crontab er en fil, der lister de specifikke opgaver, som computeren skal køre, og hvornår opgaverne skal køres.
Q: Hvilken slags gentagne opgaver kan Cron bruges til?
A: De fleste gentagne opgaver i forbindelse med vedligeholdelse eller administration af en computer eller et computernetværk kan automatiseres med Cron. Det kan også bruges til mange andre opgaver som at downloade filer fra internettet og downloade e-mail på bestemte tidspunkter eller datoer.
Søge