Den här artikeln kommer att förklara schemaläggningsuppgifter och köra skript med jämna mellanrum med cron-jobb.
Vad är Cron?
Cron är ett schemaläggningsprogram som körs i bakgrunden som en process. Den kan användas för att regelbundet köra vissa jobb som är schemalagda med hjälp av dess fördefinierade uppsättning regler. Cron levereras förinstallerat på de flesta Linux-distributioner eller finns i förvaret för att installeras manuellt.
Cron-förinställningar
Cron på Ubuntu kommer med en uppsättning fördefinierade schemaläggare. Du kan kontrollera dem genom att köra kommandot nedan:
$ ls / etc / cron.*Vanligtvis är dessa mappar “/ etc / cron.timme ”,“ / etc / cron.dagligen ”,“ / etc / cron.månadsvis ”och“ / etc / cron.varje vecka".
Lägg bara dina önskade skript i en av dessa mappar för att köra automatiska uppgifter varje timme, dagligen, månad eller vecka.
Observera att cron använder “/ bin / sh” -skal som standard. Om du vill använda “/ bin / bash” som skal i cron-skript måste du använda “!# / bin / bash ”hashbang högst upp i skriptfilen eller definiera skalet som“ SHELL = / bin / bash ”-variabel i första raden i ett schemalagt bash-skript. Åsidosättande av "SHELL" -miljövariabeln fungerar också för crontab-redigeraren som förklaras nedan.
Inte alla systemmiljövariabler kan exponeras för cron-jobb. Så det är i allmänhet en bra idé att manuellt definiera viktiga miljövariabler i ett manus som planeras av cron.
Crontab
Med Crontab kan du definiera dina egna schemalagda uppgifter. Du kan använda den för att konfigurera cron-scheman som skiljer sig från de fyra standardinställningarna för cron som förklarats ovan.
För att ställa in en schemalagd uppgift i crontab, starta först crontab-redigeraren med kommandot nedan:
$ crontab -eNu i slutet av filen kan du lägga till en post i följande format:
minut timme dag månad vardag / full / sökväg / till / skript.shVar:
- minut: valfritt värde i intervallet 0 till 59
- timme: valfritt värde i intervallet 0 till 23, 0 är midnatt
- dag: valfritt värde i intervallet 1 till 31
- månad: valfritt värde i intervallet 1 till 12
- veckodag: valfritt värde i intervallet 0 till 6, 0 är söndag
Crontab-posten nedan tar en skärmdump av ditt skrivbord och lagrar den i din hemkatalog en gång kl. 15:13 den 2 mars plus varje tisdag i mars kl. 15:13.
13 15 2 3 2 scrotFör att lista alla crontab-poster, använd kommandot nedan:
$ crontab -lFler exempel
Cron-uppgifter kan bäst förklaras genom exempel, så nedan är några exempel som med jämna mellanrum tar skärmdumpar på skrivbordet och lagrar dem i hemmappen.
Förutom de fem schemaläggningsvariablerna använder cron också en speciell sträng för att schemalägga jobb. Dessa strängar är:
- @hourly: jobbet körs varje timme
- @daily / @midnight: jobbet körs varje dag
- @weekly: jobbet körs en gång i veckan
- @monthly: jobbet körs en gång i månaden
- @ årligen / @ varje år: jobbet körs en gång om året
- @reboot: jobbet körs varje gång omstart / inloggning
Crontab-posten nedan tar en skärmdump en gång vid varje omstart:
@reboot scrotDu kan ersätta "@reboot" med andra specialsträngar som nämns ovan.
Om du använder en asterisk eller jokertecken i stället för någon av de fem variablerna upprepas jobbet i alla nya instanser av variabeln. Inmatningen nedan tar en skärmdump varje minut:
* * * * * ScrotVarje timme:
0 * * * * scrotVarje dag klockan 18:00:
0 18 * * * scrotVarje månad den 6: e kl 18:00:
0 18 6 * * scrotAnvänd “/” för att köra ett skript med ett fast periodiskt intervall på 30 minuter (körs var 30: e minut):
* / 30 * * * * scrotDu kan använda kommaseparerade variabler för att definiera upprepad körning av skript med jämna mellanrum. Exemplet nedan tar en skärmdump av ditt skrivbord var 1: a, 4: e och 5: e minut av en ny timme.
1,4,5 * * * * scrotVerifiera Crontab-poster
Det kan vara svårt att definiera crontab-poster men att felsöka dem eller verifiera om de fungerar vid rätt tidsstämplar är ännu svårare. Ett alternativ är att använda en virtuell maskin och logga tidsstämplar för ett skript som körs regelbundet på ett cron-jobb genom att inkludera något som "datum" -kommando och omdirigera utdata till en textfil. En bättre lösning är dock att använda en av de många online-tjänsterna för cronjobbtestning som finns tillgängliga på nätet. Jag rekommenderar att webbplatsen för cron-testare är tillgänglig här ett försök.
Slutsats
Att köra cron-jobb är ett utmärkt sätt att automatisera upprepade uppgifter, särskilt på servrar. Verktyget är extremt kraftfullt och anpassningsbart. Det är dock viktigt att se till att din schemaläggningsdefinition fungerar korrekt, speciellt om det finns uppdragskritiska uppgifter.