Planlægning af periodiske opgaver ved hjælp af Cron i Linux
cron
er et Linux-program, der bruges til at planlægge en kommando eller et script, der skal udføres på et senere tidspunkt. Det kan også bruges til at planlægge periodiske kørende kommandoer og scripts. Programmer, der er planlagt ved hjælp af cron, kaldes almindeligvis Cron job. Dens hovedanvendelse er til systemadministrationsopgaver såsom regelmæssige sikkerhedskopier, regelmæssige softwareopdateringer og andre lignende vedligeholdelsesopgaver.
Introduktion
cron
kører som en dæmon i Linux, dvs. som en baggrundsproces. Det giver brugere mulighed for at planlægge job direkte med crontab-kommandoen, som åbner en konfigurationsfil kaldet Cron File i en editor. Separate Cron-filer oprettes for hver bruger.
Oprettelse af en Cron-fil og grundlæggende syntaks
Det crontab
kommando kan udføres med -e
flag for at redigere en eksisterende Cron-fil. Hvis filen ikke allerede eksisterer, oprettes den. Hvis brugeren kalder kommandoen for første gang, og hvis der er flere fileditorer installeret på Linux-systemet, vil kommandoen bede brugeren om at vælge en standardeditor fra en liste over redaktører.
Efter valg af editor, vil en cron-fil til brugeren blive oprettet og åbnet. Du kan nu angive job i filen.
Den generelle syntaks til at specificere et Cron-job er:
Dybest set vil køre på det angivne 'minut' (0-59), 'time' (0-23), 'dag i måneden' (1-31), måned (1-12), ugedag (0-7, Til søndag kan enten 0 eller 7 bruges) i Cron Job. For at forenkle, lad os tage et eksempel:
1 2 3 4 5 ekko "Hej"
Det betyder kommandoen ekko "Hej"
vil køre på hver femte dag i ugen (fredag) og hver 3. dag i måneden, på hver 4. måned i året (april), på tidspunktet 02:01 (2. time første minut).
Hvis samme kommando skal køres hver dag kl. 02:01, vil syntaksen se sådan ud:
1 2 * * * ekko "Hej"
Det *
betyder 'altid' eller 'for alle', f.eks. for alle måneder, for alle ugedage osv.
Kommandooperatøren (,
) kan bruges til at indtaste en liste over værdier, når opgaven skal gentages. For eksempel:
0 2,3,4 * * * ekko "Hej"
Dette vil køre programmet kl. 02.00, 03.00 og 04.00 hver dag.
Tilsvarende en bindestreg (-
) operatør kan bruges til at angive et område, som opgaven skal gentages for. For eksempel:
0-20 2 * * * ekko "Hej"
Dette vil køre programmet kl. 02:00, 02:01, 02:02 og så videre op til kl. 02:20.
Endelig har vi skråstreget ( /
) operatør. Denne operator bruges til at angive en intervalværdi, som opgaven skal gentages efter. For eksempel. */15
i referatfeltet betyder, at opgaven skal gentages hvert 15. minut. 2-10/2
i timer-feltet angiver, at opgaven skal gentages mellem kl.
*/15 2-10/2 * * * ekko "Hej"
Når du har foretaget indtastningen i Cron-filen, skal du gemme filen og afslutte editoren.
Du skal se en 'installerer ny crontab' besked i terminalen efter at have gemt og afsluttet crontab-filen.
Makroer
Visse makroer er foruddefineret i Cron, som angiver nogle almindeligt nødvendige tidsintervaller, såsom hver time, hver dag, hver måned osv.
For at køre en opgave én gang hver dag ved dagens start, dvs. kl. 00:00, skal du bruge makro @daglige
. Dette svarer til 0 0 * * *
.
Du kan lægge dette i Cron-filen på samme måde som beskrevet før.
På lignende måde kan de andre makroer bruges, dvs. @hver time
(minut 0 af hver time), @månedlige
(00:00 den første dag i måneden), @ugentlig
(00:00 den første dag i ugen, @årligt
(00:00 den første januar hvert år), @genstart
(ved hver start af computeren).
Konklusion
I denne artikel lærte vi, hvordan man tilføjer Cron Jobs til regelmæssig udførelse i Linux. Korrekt brug af Cron Jobs er praktisk til selv de mest besværlige manuelle opgaver, som brugeren står over for, f.eks. regelmæssig sletning af gamle logfiler, arkivering af alle former for kolde data (data som sjældent tilgås) osv.