Forståelse og brug af Cron: En omfattende guide til at planlægge job
Cron, forkortelse for kommando køres online, er en kraftfuld tidsbaseret jobplanlægning i Unix-lignende operativsystemer. Begrebet cron er en leg med ordet kronos or Chronos, som i græsk mytologi repræsenterer tid. Navnet cron for den tidsbaserede jobplanlægger afspejler dens funktion med at planlægge og udføre opgaver på bestemte tidspunkter eller intervaller, hvilket gør det til en passende reference til begrebet tid i mytologien.
Cron giver dig mulighed for at automatisere gentagne opgaver, udføre scripts med bestemte intervaller og vedligeholde systemets effektivitet. Denne omfattende guide vil lede dig gennem alt, hvad du behøver at vide om cron, fra installation til brug, nøgleordforråd og rigtige kodeeksempler.
Indholdsfortegnelse
- Hvad er cron?
- Installation af Cron
- Grundlæggende begreber og terminologi
- Cron syntaks
- Eksempler og brugssager
- Almindelige faldgruber og bedste praksis
- Yderligere cron-ressourcer
Hvad er Cron?
Cron er en dæmon (baggrundsproces), der kører på Unix-baserede systemer, inklusive Linux og macOS. Dens primære formål er at udføre planlagte opgaver automatisk. Disse opgaver kan variere fra simple scripts til systemvedligeholdelse og sikkerhedskopiering.
Installation af Cron
I de fleste Unix-lignende systemer er cron forudinstalleret. Du kan tjekke dens tilgængelighed ved at åbne en terminal og skrive:
crontab -e
Hvis denne kommando åbner cron tabel-editoren, har du cron installeret. Hvis ikke, kan du installere det ved hjælp af dit systems pakkehåndtering. For eksempel på Ubuntu kan du bruge:
sudo apt-get install cron
Cron koncepter og terminologi
Før vi dykker ned i cron-brug, lad os forstå nogle væsentlige begreber og terminologi:
- crontab: Forkortelse for cron bord, det er en fil, der indeholder listen over planlagte opgaver for en bruger.
- Cronjob: En enkelt opgave eller kommando planlagt til at køre på et bestemt tidspunkt.
- Fields: Hvert cronjob har fem felter, der definerer, hvornår jobbet kører:
- Minut (0-59)
- Time (0-23)
- Dag i måneden (1-31)
- Måned (1-12)
- Ugedag (0-7, hvor både 0 og 7 repræsenterer søndag)
Cron syntaks
At forstå syntaksen for en crontab-indgang er afgørende. Den følger mønsteret:
* * * * * command-to-be-executed
Her er en kommenteret forklaring, som du kan indsætte i dit cron-job:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Hver stjerne (*) repræsenterer et felt i cron-udtrykket. Hvis du f.eks. vil planlægge et job hver dag kl. 3, skal du bruge:
30 15 * * * command-to-be-executed
Cron-eksempler og brugssager
Lad os udforske nogle praktiske eksempler for at illustrere cron-brug:
- Kørsel af et script dagligt: For at udføre et script hver dag ved midnat, kan du bruge:
0 0 * * * /path/to/script.sh
- Kørsel af et script hver time: Til en timeopgave skal du bruge:
0 * * * * /path/to/script.sh
- Ugentlig backup: For at planlægge en ugentlig backup om søndagen kl. 2 skal du bruge:
0 2 * * 0 /path/to/backup-script.sh
- Kørsel af en opgave på bestemte måneder: For kun at køre et job i januar og juli kl. 8:
30 8 * 1,7 * /path/to/script.sh
Cron faldgruber og bedste praksis
- Miljøvariabler: Sørg for, at dine cron-job opsætter de nødvendige miljøvariabler, da cron-job ikke arver din shells miljøvariabler.
- Tilladelser: Sørg for at indstille tilladelserne til din scriptfil som eksekverbar. Hver gang jeg skulle gemme mit script igen, ville jeg opdage, at mine tilladelser skulle indstilles igen!
- Stivariabler: Angiv den fulde sti til eksekverbare filer og scripts i dine cron-job for at undgå problemer med relative stier.
- Test: Test dem i et sikkert miljø, før du opsætter kritiske cron-job for at sikre, at de fungerer som forventet.
- Logning: Omdiriger outputtet af dine cron-jobs til en logfil for at spore deres udførelse og eventuelle potentielle fejl.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Dette cron-job kører et script /path/to/script.sh
hver dag ved midnat, og outputtet (både stdout og stderr) genereret af scriptet føjes til logfilen
/path/to/cron.log
. Dette er en almindelig praksis at fange og logge output fra cron-job til overvågning og fejlfindingsformål. Lad os nedbryde denne specifikke cron job syntaks:
- *0 0 * * *: Denne del definerer tidsplanen for, hvornår cron-jobbet skal køre. I dette tilfælde er den planlagt til at køre hver dag ved midnat (0 minutter over 0 timer).
- /sti/til/script.sh: Dette er kommandoen eller scriptet, der skal udføres, når cron-jobbet kører. Dette eksempel viser et script placeret på
/path/to/script.sh
. - >> /sti/to/cron.log: Denne del omdirigerer standardoutputtet (stdout) af cron-jobbet til en logfil med navnet
cron.log
placeret på/path/to/
. Det>>
operatør tilføjer output til logfilen, så hvis filen ikke eksisterer, vil den blive oprettet, og hvis den allerede findes, vil outputtet blive tilføjet til slutningen af filen. - 2> & 1: Dette bruges til at omdirigere både standardoutput (stdout) og standardfejl (stderr) til den samme logfil. Det
2
repræsenterer stderr, og den1
repræsenterer stdout. Så,2>&1
betyder, at både stdout og stderr omdirigeres til den samme logfil, der er angivet tidligere.
Cron er et værdifuldt værktøj til at automatisere opgaver på Unix-baserede systemer. Med sine fleksible planlægningsmuligheder kan den forenkle systemadministration og forbedre effektiviteten. Ved at forstå dens syntaks og følge bedste praksis kan du udnytte crons kraft til at automatisere dine rutineopgaver effektivt.
Yderligere Cron-ressourcer
- Unix Dæmon - Dean Wilson