Dra nytte av Linux-kommandoen crontab for å automatisere forskjellige verdslige og repeterende oppgaver, forenkle livet ditt. Dette utmerkede og brukervennlige verktøyet, kombinert med noen skript, kan ikke bare automatisere alle slags oppgaver, men også bidra til å unngå enkle menneskelige feil eller glemsomhet.
Her vil du lære hva crontab er, hvordan du legger til automatiserte jobber, og noen virkelige eksempler.
Hva er Crontab?
Crontab er en demoneprosess som kjører i bakgrunnen på nesten alle Linux-maskiner, og brukes til å planlegge og utføre automatiserte oppgaver med angitte tidsintervaller. Det brukes også ofte av programvareutviklere til å kjøre tidkrevende oppgaver i bakgrunnen.
Dette kan være alt inkludert, men ikke begrenset til å sende batch-e-post, sjekke Twitter-feeden din, utføre sikkerhetskopier eller bare utføre en påminnelse.
Grunnleggende Crontab-kommandoer
Hver Linux-bruker på maskinen har sin egen crontab-fil, som inneholder sine aktive crontab-jobber. Her er noen grunnleggende terminalkommandoer du vil bruke til å vise og endre crontab-filen:
- crontab-l Liste over crontab-jobber.
- crontab -e Rediger crontab-filen.
- crontab -r Fjern alle oppføringene fra crontab-filen.
Ovennevnte kommandoer er for nåværende bruker crontab-fil. Hvis du trenger å endre crontab-filen til en annen bruker, bruker du bare -u alternativ. For eksempel kan du redigere jdoe brukerens crontab-fil med kommandoen:
Vil du bedre administrere brukere på Ubuntu Linux? Svaret er å opprette grupper, og bruk deretter brukerfunksjonen Ubuntu legge til.
sudo crontab -ujdoe -e
Format for Crontab Jobs
Hver crontab-jobb består av en linje, og er formatert som nedenfor:
MINUTTIME DAG MÅNED WEEKDAG KOMMANDO
Tabellen nedenfor forklarer de forskjellige elementene i crontab-jobben:
Element | Ranage | Beskrivelse |
---|---|---|
Minutt | 0 - 59 | Minuttet å utføre crontab-jobben kl. |
Time | 0 - 23 | Timen for å utføre crontab-jobben kl. |
Dag | 1 - 31 | Dagen i måneden for å utføre crontab-jobben kl. |
Måned | 1 - 12 | Måneden for å utføre crontab-jobben kl. |
Ukedag | 0 - 6 | Ukedagen for å utføre crontab-jobben kl. |
Kommando | Enhver Linux-kommando du kan utføre på terminalen. |
Du kan bruke en stjerne (*) i hvilket som helst av feltene for å betegne et jokertegn, noe som betyr at crontab-jobben vil utføres uavhengig av den tidsperioden. For eksempel vil crontab-jobben nedenfor utføres hver natt nøyaktig 3:20:
20 3 * * * /root/backup.sh
Flere verdier
Hver tidsperiode kan også omfatte flere elementer. Du kan spesifisere de nøyaktige verdiene ved å skille dem med et komma, og crontab-jobben nedenfor utføres hver time 20 og 50 minutter etter timen:
20,50 * * * * / sti / til / kommando.sh
Men hvis du vil utføre crontab-jobben med bestemte intervaller innen en tidsperiode, kan du bruke */PERIODE, og crontab-jobben nedenfor utføres automatisk 15 minutter over timen hver tredje time:
15 * / 3 * * * / sti / til / kommando.sh
Holder Crontab-jobber stille
Alt avhengig, kan det være lurt å eliminere all produksjon fra crontab-jobbene, slik at de ikke havner i systemets postmappe. Du kan gjøre dette ved å legge til > / dev / null 2> & 1 til enhver crontab-jobb. For eksempel:
0 6 15 * * / path/to/backup.sh> / dev / null 2> & 1
Legge til Crontab-jobber
Vanligvis er den mest brukte metoden for å legge til eller endre crontab-jobber crontab -e kommando. Kjør denne kommandoen i terminalen:
crontab -e
Dette åpner en tekstredigerer som for eksempel nano med innholdet i crontab-filen. Hver crontab-jobb ligger på en linje, og du kan legge til, endre og fjerne linjer etter ønske. Når du er ferdig, lagrer du og lukker filen ved å trykke på Ctrl + W, etterfulgt av Y og Tast inn taster, som umiddelbart aktiverer alle crontab-jobber i filen.
Snarvei for å legge til jobber
I stedet for manuelt å endre crontab-filen, er det en rask enkeltkommando du kan kjøre for å legge til en jobb. Hvis du for eksempel vil legge til denne crontab-jobben som går hver søndag klokken 14:00:
0 14 * * 0 / sti / til / kommando.sh
Du kan legge til jobben i crontab-filen din med enkeltkommandoen:
(crontab -l; ekko "0 14 * * 0 /path/to/command.sh";) | crontab
Ovennevnte kommando viser bare alle jobber som er i crontab-filen, skriver ut den nye jobben og rør alt inn i den crontab erstatte innholdet.
Oppføring / fjerning av Crontab-fil
Du kan liste opp alle jobber som er aktive i crontab-filen din med kommandoen:
crontab -l
Du kan også fjerne alle crontab-jobber og tømme innholdet i crontab-filen med kommandoen:
crontab -r
Eksempel: Spill lyder!
Trenger du en rask påminnelse annenhver time mens du jobber for å fortelle deg at tiden har gått? Ta tak i favorittklippet ditt i nesten hvilket som helst format (.wav, .mp4, hva som helst), og hvis det er lagret på (for eksempel) /home/myuser/myalert.wav har den automatisk spilt med crontab-jobben:
0 * / 2 * * * aplay /home/myuser/myalert.wav
Hva med å gi deg en fin sending fra ukens arbeid med favorittsangen din som automatisk spilles klokken 17:00 hver fredag ettermiddag? Ta tak i favorittsangklippet ditt, og hvis det er lagret på si /home/myuser/friday_song.mp4 du vil legge til crontab-jobben:
0 17 * * 5 aplay /home/myuser/friday_song.mp4
Eksempel: Sikkerhetskopier filer med Rsync
En av de mange utmerkede bruksområdene til crontab er muligheten til automatisk å sikkerhetskopiere filene dine til en ekstern server. Reduser risikoen for at du noen gang mister viktige data igjen med dette utmerket rsync opplæring.
Eksempel: Sjekk om nettsteder er online
Kanskje du vil sjekke hvert femte minutt automatisk om forskjellige nettsteder er online eller ikke, og bli varslet via e-post hvis noen er nede. Her er et fiffig lite PHP-skript som vil gjøre nettopp det.
php
// E-postadresse for å varsle om nettsteder nede
$ email = '[email protected]';
// Definer nettadresser som skal sjekkes
$ urls = [< br /> ' https://apexpl.io',
'https://google.com',
'https://some-junk-site-that-will-hopefully-never-exist.com'
];
// Gå gjennom nettadresser
$ down = [];
foreach ($ urls as $ url) {
// Check URL
$ status = check_url ($ url);
hvis ($ status! = 200) {
$ ned [] = $ url;
}
}
// Send e-post hvis vi har nettsteder
hvis (teller ($ ned)> 0) {
e-post ($ e-post, "Urgent - Sites Down!", "Din bot har oppdaget følgende nettsteder er for tiden nede:
". implodere ("
", $ ned));
}
// Avslutt
exit (0);
/ **
* Sjekk URL < br /> * /
funksjon sjekkurl (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, true);
$ response = curl_exec ($ ch);
// Get status, and close connection
$ status = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);
curl_close ($ ch);
// Returner
returner $ status;
}
Endre bare e-postadressen og ønskede URL-er for å sjekke øverst i filen, og lagre det et sted som /home/myuser/check_sites.php . Hvis du vil at dette skriptet skal kjøres hvert femte minutt og varsle deg via e-post for eventuelle nettsteder som er nede, legg til crontab-jobben:
* / 5 * * * * / usr / bin / php /home/myuser/check_sites.php> / dev / null 2> & 1
Automatiser livet ditt!
Med denne artikkelen kan du forhåpentligvis har forstått automatiseringskraften til crontab, og hvordan den kan brukes til å automatisere mange av de verdslige og repeterende oppgavene i din liv.
Du har lært hva crontab er, om crontab-filen, hvordan crontab-jobber er formatert, og noen virkelige eksempler på hvordan den kan brukes.
Vil du spare tid og unngå gjentatte oppgaver? Svaret er automatisering! Her er noen nyttige applikasjoner for Linux-stasjonær automatisering du kan prøve.
- Programmering
- Linux
Abonner på vår Nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!
One More Step!!!
Bekreft e-postadressen din i e-post vi nettopp sendte deg.