Låt oss utforska crontab, dess kommandon och olika operationer associerade med Crontab.
Vi kommer att lära oss hur man schemalägger uppgifter med hjälp av cron-verktyget, och till sist kommer vi också att diskutera några av onlineverktygen som hjälper oss att formatera och testa cron-kommandona.
Innehållsförteckning
Ursprung
Crontab står för ”cron table”. Ordet cron har tagits från det grekiska ordet Chronos som betyder tid. Crontab är en systemdemonprocess som automatiskt utför vissa uppgifter och jobb enligt den schemalagda tiden.
Användningsfall
Crontab är användbar för att utföra olika operationer som att hantera automatiserad säkerhetskopiering, rotera loggfiler, synkronisera filer mellan fjärrmaskiner och rensa ut tillfälliga mappar etc. Crontab kan användas för alla typer av arbete, men det blir extra användbart när vi börjar ta itu med systemadministrativ typ av arbete.
Med hjälp av cron kan en administratör schemalägga ett jobb som ska köras på en viss tid och dag.
Så låt oss se hur vi kan ställa in det här.
Crontab-syntax
För att köra en lista med kommandon läser verktyget cron konfigurationsfilerna. För att tolka raderna i crontab-konfigurationstabellerna följer den en Crontab-syntax. Crontab har sex fält, och de första fem (1-5) fälten definierar datum och tid för körning. Det sista fältet, dvs. 6:e fältet, kan vara ett användarnamn och/eller uppgift /jobb/kommando/skript som ska köras.
* * * * * USER_NAME KOMMANDO/SCRIPT-ATT UTFÖRA
│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Veckodag (0 – 6) (0 är söndag, eller använd namn)
│ │ │ |____________ Månad (1 – 12),* betyder varje månad
│ │ |______________ Dag i månaden (1 – 31),* betyder varje dag
│ |________________ Timme (0 – 23),* betyder varje timme
|__________________ Minut (0 – 59), * betyder varje minut
Anmärkningar:
- Asterisk
- används för att matcha alla möjliga värden för ett fält. Till exempel skulle en asterisk som används i timmefältet motsvara varje timme eller en asterisk i månadsfältet skulle motsvara varje månad.
användarnamn är valfritt (endast tillgängligt om det är systemets crontab-fil)
Exempel:
Låt oss förstå syntaxen ovan med några exempel
0 5 * * * /scripts/job.sh
1. Schemalägg en cron som ska köras kl. 05.00 dagligen
0 6,18 * * * /scripts/job.sh
2. Schemalägg en cron som ska köras två gånger om dagen kl. 06.00 och 18.00
* * * * * /scripts/job.sh
3. Schemalägg en cron som ska köras varje minut
0 19 * * mon /scripts/job.sh
4. Schemalägg en cron som ska köras varje måndag kl. 19.00.
*/10 * * * * /scripts/job.sh
5. Schemalägg en cron som ska utföras var 15:e minut.
* * * feb,jun,oct * /script/job.sh
6. Schemalägg en cron att köra på utvalda månader
25 7 4 3 * /home/script/backup.sh
7. Kör skalskriptet /home/script/backup.sh den 4 mars kl. 07:25
8. Schemalägg en cron som ska utföras var 30:e sekund
- Eftersom vi inte har kontroll över sekunder i Crontab, men vi kan uppnå det genom nedanstående tvåstegsprocess.
* * * * * /home/scripts/script.sh
- Låt oss först schemalägga en uppgift som körs varje minut.
* * * * * sleep 30; /home/scripts/script.sh
Låt oss nu använda sleep-kommandot för att pausa exekveringen i 30 sekunder.
Ovanstående uppgift kommer att stoppa exekveringen i 30 sekunder och den kommer att återupptas igen.
Typ av Cron-konfigurationsfiler
Det finns två typer av Cron-konfigurationsfiler:
UNIX/Linux-systemet Crontab
Detta kräver root-behörighet eftersom det vanligtvis används för systemtjänster och kritiska jobb. Det sjätte fältet (i ovanstående syntaxbeskrivning) är namnet på en användare som kommandot ska köras som. Det ger systemets crontab möjlighet att köra kommandon som vilken användare som helst.
Användaren Crontab
En användare kan också installera sina egna cron-jobb med hjälp av crontab-kommandot. Även här är det sjätte fältet (i ovanstående syntaxbeskrivning) kommandot som ska köras, och alla kommandon körs som användaren som skapade crontab. Varje användare kan ha sin egen crontab-fil, och även om dessa är filer i /var/spool/cron/crontabs, är de inte avsedda att redigeras direkt. Vi måste använda crontab-kommandot för att redigera eller ställa in våra egna cron-jobb.
Hur fungerar det? Cron-tjänsten (demon) körs i bakgrunden och kontrollerar ständigt (varje minut) /etc/crontab-filen och /etc/cron.*/-katalogerna. Den kontrollerar också katalogen /var/spool/cron/. Kommandon exekveras av cron
när fälten för minut, timme och månad matchar den aktuella tiden, och minst ett av tvådagarsfälten (dag i månaden eller veckodag) matchar den aktuella dagen.
Grundläggande kommandon
Lista ut befintliga Cron-jobb
crontab -l
Vi kan lista ut alla Cron-jobb utan att öppna crontab-konfigurationsfilen med kommandot nedan
[[email protected] ~]# crontab -l no crontab for adminvista.com [[email protected] ~]#
Om det inte finns något befintligt jobb kommer det att returnera utdata som
[[email protected] ~]# crontab -l # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command 0 */1 * * * /home/account/scripts/updateAccountStatuses.sh 0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh [[email protected] ~]#
Om användaren redan har lagt till några av jobben kommer det att visas enligt följande.
Cron-tabellen är användarspecifik, vilket innebär att du måste vara inloggad med en specifik användare för att se cron-tabelllistan.
Lista Cron för en viss användare
För att lista schemalagda jobb för en annan användare, använd alternativet som -u (användare) och -l (lista).
crontab -u annat_användarnamn -l
Exempel: crontab -u adminvista.com -l
Lägg till/ändra Crontab-poster
För att redigera crontab-posten kan vi använda -e-alternativet som visas nedan.
crontab -e
Kommandot ovan öppnar vi-redigerare där du anger detaljerna för jobbet och sparar filen. När du har sparat kan du verifiera om cron är konfigurerat eller inte med crontab -l.
Lägg till/ändra Crontab-poster för en viss användare
crontab -u another_username -e
Vi kan redigera crontab för en annan användare med kommandot nedan
Exempel: crontab -u adminvista.com -e
Ta bort Crontab Entry
Använd parametern -r med Crontab för att ta bort kompletta schemalagda jobb utan bekräftelse från crontab
crontab -r
crontab -i -r
[[email protected] ~]# crontab -i -r crontab: really delete adminvista.com's crontab?
Om du vill ha bekräftelse innan du tar bort schemalagda jobb, använd -i-alternativet med -r, vilket kommer att begära bekräftelse från användaren innan du tar bort användarens crontab.
Crontab specialsträng
Förutom ovanstående syntax som vi diskuterade, kan vi också använda åtta specialsträngar från Crontab. Det kommer inte bara att spara vår tid utan det kommer också att förbättra läsbarheten.
Specialsträng
Beskrivning
@starta om
Kör en gång, efter uppstart.
@årlig
Kör en gång om året, dvs 0 0 1 1 *
@årligen
Samma som @yearly
@en gång i månaden
Kör en gång i månaden, dvs 0 0 1 * *
@varje vecka
Kör en gång i veckan, dvs 0 0 * * 0
@dagligen
Kör en gång om dagen, dvs 0 0 * * *
@midnatt
Samma som @dagligen
@varje timme
Kör en gång i timmen, dvs 0 * * * *
Exempel på specialsträngar för Crontab
1. Crontab för att schemalägga uppgifter på årsbasis
@yearly /scripts/greeting.sh
Vi kan köra över en för att skicka en nyårshälsning, den kommer att köras vid den första minuten av varje år.
2. Crontab för att schemalägga uppgifter som ska utföras på månadsbasis.
@monthly /scripts/cleanup.sh
Vi kan utföra ovanstående för att utföra vissa saneringsaktiviteter i början av varje månad.
På samma sätt kan vi använda andra Crontab specialsträngar för vecko-, dagliga- och timändamål.
Cron Directory
- Systemadministratören kan använda ett systemomfattande cron-schema som kommer under den fördefinierade cron-katalogen som visas nedan
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
/etc/cron.weekly
Crontab Realtidsexempel
Låt oss diskutera några av de realtidsexempel som en systemadministratör eller IT-proffs brukar använda.
Ta bort tomma filer och katalog
45 0 * * * adminvista.com hitta /tmp -typ f -empty -delete
Ovanför cron expression hittar de tomma filerna och katalogen från /tmp-katalogen och det kommer att radera dem. Det här jobbet kommer att pågå 12.45 på en daglig basis. Vi måste nämna användarnamnet för att utföra detta jobb. I exemplet ovan utför adminvista.com-användaren cron-jobboperation.
Utför flera uppgifter med en enda cron
* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh
Flera uppgifter/jobb kan separeras med ett semikolon(;) och kan tilldelas ett enda cron-uttryck.
Cron formaterings- och testverktyg
Hittills har vi diskuterat kommandon och syntax för crontab för att schemalägga en uppgift. Men vad händer om du inte är en systemadministratör och ditt jobb inte är att ställa in Cron regelbundet, det kanske inte går att komma ihåg syntaxen och det öppnar utrymme för fel. Oroa dig inte, vi har en lösning på detta problem.
Det finns flera Cron-formateringsverktyg tillgängliga online.
# 1. Cron Job Generator Cron Job Generator
är ett mycket användarvänligt gränssnitt där du kan ange minut, dagar och sökväg för skriptet för att generera crontab.
Låt oss ta ett realtidsexempel där jag måste köra /home/processMonitor.sh var 5:e minut mellan måndag till fredag.
Så jag fick Cron-syntaxen nedan som jag kan lägga i min crontab genom att köra
crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh
# 2. Easycron Easycron
är en användbar webbaserad cron jobbschemaläggare. Vi kan skapa ett cron-jobb genom att ange en URL att anropa, vi kan ställa in tiden när det ska köras. Vi kan också specificera ett cron-uttryck eller lägga till det manuellt från en beskrivande form. Viktigt är att vi valfritt kan använda grundläggande HTTP-autentisering för ett litet lager av säkerhet.
Inte bara detta, utan Easycron kan också användas för att uppnå andra syften som standard Cron-uttryck, Cron-jobbexekveringsloggar, e-postmeddelanden, separata felloggar, etc.
# 3. Crontab Generator Crontab Generator
är ett annat praktiskt verktyg för att generera crontab och med det här verktyget kan du också lägga till om du vill spara cron-utdata till filen eller skicka den till e-post.
# 4. Crontab Guru Crontab Guru
är en enkel online cron-schemauttrycksredigerare. Dessutom ger det ett användbart sätt att övervaka ditt cronjob. Allt vi behöver göra är att kopiera ett tillhandahållet kommando och lägga till i slutet av crontab-definitionen. Om cron-jobbet misslyckas eller inte ens startar kommer du att få ett varningsmail.
I exemplet nedan kommer Job att köras klockan 04:05, varje dag, varje månad och varje vecka.
# 5. CRON Tester CRON-testare
tillåter oss att testa cron tid/datum definitioner. Det kan finnas en situation där vi måste avkoda den befintliga cron-syntaxen för felsökning eller bara vill göra ett test.
För att göra det kan vi använda det här verktyget. Allt vi behöver göra är att kopiera och klistra in vårt cron-uttryck i cron-definitionsfältet, välj sedan antalet iterationer och klicka på Testa för att se de olika datumen då det kommer att köras.
Låt oss kolla ett av våra cron-uttryck 4 3 */2 * *som ska köras 03:04(AM) varannan dag. Låt oss verifiera det med cron tester.
.