Udnyt Linux-kommandoen crontab til at automatisere forskellige verdslige og gentagne opgaver, hvilket forenkler dit liv. Dette fremragende og brugervenlige værktøj kombineret med noget scripting kan ikke kun automatisere alle slags opgaver, men hjælper også med at undgå enkle menneskelige fejl eller glemsomhed.
Her lærer du, hvad crontab er, hvordan man tilføjer automatiserede job og nogle eksempler fra den virkelige verden.
Hvad er Crontab?
Crontab er en dæmonproces, der kører i baggrunden på næsten alle Linux-maskiner og bruges til at planlægge og udføre automatiserede opgaver med bestemte tidsintervaller. Det bruges også ofte af softwareudviklere til at køre tidskrævende opgaver i baggrunden.
Dette kan være alt inklusive, men ikke begrænset til at sende batch-e-mails, kontrollere dit Twitter-feed, udføre sikkerhedskopier eller blot udføre en påmindelse.
Grundlæggende Crontab-kommandoer
Hver Linux-bruger på maskinen har sin egen crontab-fil, der indeholder deres aktive crontab-job. Her er nogle grundlæggende terminalkommandoer, du vil bruge til at se og ændre crontab-filen:
- crontab-l Liste over alle crontab-job.
- crontab -e Rediger crontab-filen.
- crontab -r Fjern alle poster fra crontab-filen.
Ovenstående kommandoer er til nuværende bruger crontab-fil. Hvis du har brug for at ændre en anden brugers crontab-fil, skal du blot bruge -u mulighed. For eksempel kan du redigere jdoe brugerens crontab-fil med kommandoen:
Ønsker du bedre at administrere brugere på Ubuntu Linux? Svaret er at oprette grupper og derefter bruge Ubuntu tilføj brugerfunktionen.
sudo crontab -ujdoe -e
Format for Crontab Jobs
Hvert crontab-job består af en linje og er formateret som nedenfor:
MINUTTIME DAG MÅNED WEEKDAG KOMMANDO
Nedenstående tabel forklarer de forskellige elementer i crontab-jobbet:
Element | Ranage | Beskrivelse |
---|---|---|
Minut | 0 - 59 | Minuttet til at udføre crontab-jobbet kl. |
Time | 0 - 23 | Timen til at udføre crontab-jobbet kl. |
Dag | 1 - 31 | Dagen i måneden, hvor crontab-jobet skal udføres kl. |
Måned | 1 - 12 | Måneden til at udføre crontab-jobbet kl. |
Ugedag | 0 - 6 | Ugedagen til at udføre crontab-jobbet kl. |
Kommando | Enhver Linux-kommando, som du kan udføre på terminalen. |
Du kan bruge en stjerne (*) i et hvilket som helst af felterne til at betegne et jokertegn, hvilket betyder, at crontab-jobbet udføres uanset denne tidsperiode. For eksempel udføres nedenstående crontab-job hver aften nøjagtigt kl. 3:20:
20 3 * * * /root/backup.sh
Flere værdier
Hver tidsperiode kan også omfatte flere elementer. Du kan angive de nøjagtige værdier ved at adskille dem med et komma, og nedenstående crontab-job udføres hver time 20 og 50 minutter efter timen:
20,50 * * * * / sti / til / kommando.sh
Men hvis du vil udføre crontab-jobbet med bestemte intervaller inden for en tidsperiode, kan du bruge */PERIODE, og nedenstående crontab-job udføres automatisk 15 minutter over timen hver tredje time:
15 * / 3 * * * / sti / til / kommando.sh
Holder Crontab Jobs stille
Alt afhængigt vil du måske fjerne al output fra crontab-job, så de ikke ender i dit systems mail-mappe. Du kan gøre dette ved at tilføje > / dev / null 2> & 1 til ethvert crontab-job. For eksempel:
0 6 15 * * / path/to/backup.sh> / dev / null 2> & 1
Tilføjelse af Crontab-job
Generelt er den mest anvendte metode til at tilføje eller ændre crontab-job crontab -e kommando. Kør denne kommando i terminalen:
crontab -e
Dette åbner en teksteditor såsom nano med indholdet af din crontab-fil. Hvert crontab-job ligger på en linje, og du kan tilføje, ændre og fjerne linjer efter ønske. Når du er færdig, skal du gemme og lukke filen ved at trykke på Ctrl + Wefterfulgt af Y og Gå ind taster, som straks aktiverer alle crontab-job i filen.
Genvej til Tilføj job
I stedet for manuelt at ændre crontab-filen er der en hurtig enkelt kommando, du kan køre for at tilføje et job. For eksempel, hvis du vil tilføje dette crontab-job, der kører hver søndag kl. 14:00:
0 14 * * 0 / sti / til / kommando.sh
Du kan tilføje jobbet til din crontab-fil med den enkelte kommando:
(crontab-l; ekko "0 14 * * 0 /sti / til / kommando.sh";) | crontab
Ovenstående kommando viser blot alle job i øjeblikket i din crontab-fil, udskriver det nye job og rør alt i crontab udskiftning af dets indhold.
Notering / fjernelse af Crontab-fil
Du kan liste alle job, der aktuelt er aktive i din crontab-fil, med kommandoen:
crontab -l
Du kan også fjerne alle crontab-job og tømme indholdet af din crontab-fil med kommandoen:
crontab -r
Eksempel: Spil lyde!
Brug for en hurtig påmindelse hver anden time, mens du arbejder for at fortælle dig, at tiden er gået? Tag dit yndlingslydklip i næsten ethvert format (.wav, .mp4, alt), og hvis det er gemt på (for eksempel) /home/myuser/myalert.wav har det automatisk spillet med crontab job:
0 * / 2 * * * aplay /home/myuser/myalert.wav
Hvad med at give dig en god afsendelse fra ugens arbejde med din yndlingssang, der automatisk afspilles kl. 17:00 hver fredag eftermiddag? Grib dit yndlingssangklip, og hvis det er gemt ved sige /home/myuser/friday_song.mp4 du tilføjer crontab job:
0 17 * * 5 aplay /home/myuser/friday_song.mp4
Eksempel: Sikkerhedskopier filer med Rsync
En af de mange fremragende anvendelser af crontab er muligheden for automatisk at sikkerhedskopiere dine filer til en ekstern server. Reducer væsentligt din risiko for nogensinde at miste vigtige data igen med dette fremragende rsync tutorial.
Eksempel: Kontroller, om websteder er online
Måske vil du automatisk kontrollere hvert femte minut, om forskellige websteder er online eller ej, og få besked via e-mail, hvis nogen er nede. Her er et smukt lille PHP-script, der gør netop det.
php
// E-mail-adresse for at give besked om websteder ned
$ email = '[email protected]';
// Definer webadresser, der skal kontrolleres
$ urls = [< br /> ' https://apexpl.io',
'https://google.com',
'https://some-junk-site-that-will-hopefully-never-exist.com'
];
// Gå gennem webadresser
$ ned = [];
foreach ($ urls som $ url) {
// Kontroller URL
$ status = check_url ($ url);
hvis ($ status! = 200) {
$ ned [] = $ url;
}
}
// Send e-mail, hvis vi har down-sites
if (count ($ down)> 0) {
mail ($ e-mail "Urgent - Sites Down!", "Din bot har registreret følgende websteder er i øjeblikket nede:
". implode ("
", $ ned));
}
// Afslut
exit (0);
/ **
* Kontroller URL < br /> * /
funktion check_url (streng $ url): int
{
// Send via cURL
$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, sand);
$ respons = curl_exec ($ ch);
// Få status, og luk forbindelse
$ status = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);
curl_close ($ ch);
// Returner
returner $ status;
}
Du skal blot ændre e-mail-adressen og de ønskede URL'er for at kontrollere øverst i filen og gemme det et sted som f.eks /home/myuser/check_sites.php . Hvis du vil have dette script kørt hvert femte minut og underrette dig via e-mail om eventuelle websteder, der er nede, skal du tilføje crontab-job:
* / 5 * * * * / usr / bin / php /home/myuser/check_sites.php> / dev / null 2> & 1
Automatiser dit liv!
Med denne artikel kan du vil forhåbentlig have forstået crontabs automatiseringsstyrke, og hvordan den kan bruges til at automatisere mange af de verdslige og gentagne opgaver i din liv.
Du har lært, hvad crontab er, om crontab-filen, hvordan crontab-job formateres og nogle virkelige eksempler på, hvordan det kan bruges.
Vil du spare tid og undgå gentagne opgaver? Svaret er automatisering! Her er nogle nyttige Linux-desktopautomationsapps, du kan prøve.
- Programmering
- Linux
Abonner på vores Nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Endnu et trin!!!
Bekræft din e-mail-adresse i e-mail, vi lige har sendt dig.