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:

instagram viewer
  • 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:

Ubuntu Linux: Legg til og fjern brukere i grupper på den enkle måten

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.

4 Linux Automation Apps for å effektivisere oppgavene og arbeidsflytene dine

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.

Relatert Emner
  • Programmering
  • Linux
Om Forfatteren
Matt Dizak (13 artikler Publisert)
Mer fra Matt Dizak

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.

.