Cron Jobs: Komplett handledning för nybörjare

Cron Jobs Complete Beginners Tutorial



Cron är det mest användbara verktyget i ett Linux- eller UNIX-liknande operativsystem som tillåter körning av kommandon eller skript på ett givet schema utan användarintervention. De schemalagda kommandona och skripten heter också som cron -jobb. Det används mest för att automatisera återkommande jobb som att köra schemalagda säkerhetskopior, rengöra tillfälliga filer, systemunderhåll och olika andra återkommande jobb. Det liknar Task Scheduler i Windows OS.

I denna handledning kommer vi att ge dig den grundläggande introduktionen av allt du behöver förstå för att schemalägga ett jobb med cron. Detta inkluderar grundläggande syntax för cron, redigering av crontab -fil, schemaläggning av ett jobb med cron med få exempel, visa cron -jobb etc.







Grunderna i Cron Job

Låt oss förstå några grunderna för ett cron -jobb.



Vad är Crond?

Crond är demonen i Linux -systemet som körs i bakgrunden och kontrollerar varje minut om det finns något jobb planerat vid den tiden. Om det finns, utför det det jobbet, annars förblir det inaktivt.



Cron Job Syntax

Syntaxen för cron -jobbet är följande:





* * * * *kommando/manus

Från vänster:

  • Den första * motsvarar minuter (0-59)
  • Den andra * motsvarar timmar (0-23)
  • Den tredje * motsvarar dag i månaden (1-31)
  • Den fjärde * motsvarar årets månad (1-12)
  • Den femte * motsvarar veckodag (0-6, söndag till lördag)

För att ange flera värden i ett fält, använd följande operatörssymboler:



  1. Asterisk (*): För att ange alla möjliga värden för ett fält
  2. Streck (-): Till s ange ett värdeområde
  3. Kommatecken (,): För att ange en lista med värden
  4. Separator (/): För att ange ett stegvärde

Redigera Crontab -fil

Crontab är en fil som innehåller schemalagda jobb i en specifik syntax. Det finns två typer av crontab -filer; en för systemspecifika cron-jobb och den andra för användarspecifika cron-jobb.

System cron jobb

De systemövergripande cronjobben finns i /etc/crontab fil och /etc/cron.d katalog, och de körs igenom /etc/cron.hourly , /etc/cron.daily , /etc/kr. varje vecka och /etc/cron. månadsvis. Endast en systemadministratör kan komma åt dessa filer.

En systemadministratör kan definiera ett cron -jobb med följande kommando:

$nano /etc/crontab

Här är syntaxen för jobbet i /etc/crontab fil:

# min hr dayofmonth month dayofweek användarkommando
* * * * *användare1ifconfig

Användarspecifika cron-jobb

De användarspecifika cron-jobben finns i / var/spool/cron/crontabs katalog. Även om du kan redigera dessa jobb manuellt, rekommenderas det att du redigerar dessa jobb med kommandot crontab -e.

En standardanvändare kan definiera ett cron -jobb med följande kommando:

$crontab-Och

Om du till exempel är inloggad som en testanvändare kommer kommandot crontab -e att redigeras crontab -filen för testanvändaren. På samma sätt, om du är inloggad som en rotanvändare, kommer kommandot crontab -e att redigera crontab -filen för rotanvändaren.

Ge kommandot nedan i Terminal för att redigera crontab -filen för alla andra användare:

$sudocrontab-u <Användarnamn> -Och

Till exempel, om du är inloggad som en test1 -användare och vill redigera crontab -filen för test2 -användaren, skulle kommandot vara:

$sudocrontab-utest2-Och

Här är syntaxen för cron -jobbet som kan läggas till i crontab -filen:

# m h dayofmonth månad dayofweek kommando
* * * * * ifconfig

Du kan se i användarspecifika jobb att det inte finns något användarnamn.

Crontab -kommandon

Kommandot crontab används för att redigera, lista och ta bort cron -jobb:

  • crontab -e För att redigera aktuell användares crontab -fil
  • crontab -l För att visa innehållet i crontab -filen
  • crontab -u [användarnamn] För att redigera någon annan användares crontab -fil
  • crontab -r För att ta bort crontab -filen för den aktuella användaren
  • crontab -i För att visa en prompt innan du tar bort den aktuella användarens crontab -fil

Schemaläggning av ett jobb med Cron

Med Cron kan du köra ett jobb vid en viss tid, datum och intervall med en minsta enhet i minuter, dvs du kan köra ett jobb varje minut.

För att schemalägga ett jobb med cron, öppna crontab -filen med metoden som diskuterades i föregående avsnitt. När du har öppnat crontab -filen uppmanas du att välja en textredigerare. Skriv ett nummer för att välja önskad textredigerare. Rulla ner till botten av filen och lägg till jobb i syntaxen som beskrivs ovan. Varje rad i en fil anger ett kommando. De fem första posterna på raden anger den schemalagda tiden och den sista posten anger vilket kommando eller skript som ska köras.

Exempel:

Följande rad i crontab-filen kommer att schemalägga cron-jobbet för att köra kommandot/skriptet var 30: e minut efter 5 timmar på alla veckodagar från måndag till lördag.

* /30 5 * * 1-6kommando/manus

Minuter

I det här fältet anger vi minuter när vi vill att kommandot ska köras. Det anges från 0 till 59. * i detta fält innebär att du kör jobbet varje minut. På crontab -raden ovan säger */30 till cron -jobbet att köra det angivna kommandot/skriptet var 30: e minut.

Timmar

I det här fältet anger vi timmarna när vi vill att kommandot ska köras. Det anges från 0 till 23. * i detta fält innebär att arbetet ska köras varje timme. På crontab -raden ovan säger värdet 5 till cron -jobbet att köra det angivna kommandot/skriptet var femte timme.

Månadens dag

I det här fältet anger vi de specifika dagar i månader då vi vill att kommandot ska köras. Det anges från 1 till 31. * i detta fält betyder varje dag. På crontab -raden ovan säger * till cron -jobbet att köra det angivna kommandot/skriptet varje dag.

Årets månad

I det här fältet anger vi de specifika månaderna då vi vill att kommandot ska köras. Det anges från 1 till 12. * i detta fält betyder varje månad. På crontab -raden ovan säger * till cron -jobbet att köra det angivna kommandot/skriptet varje månad.

Dag i veckan

I det här fältet anger vi de specifika veckodagarna när vi vill att kommandot ska köras. Det anges från 0 till 6 från söndag till lördag (0 för söndag och 6 för lördag). * I detta område betyder varje dag i en vecka. På crontab -raden ovan säger * till cron -jobbet att köra det angivna kommandot/skriptet varje dag på en vecka.

Exempel på Cron Jobs

Här är några exempel på cron -jobb:

Kör ett cron -jobb var 15: e minut

Om du vill schemalägga ett cron -jobb att köras var 15: e minut lägger du till raden nedan i crontab -filen:

* /femton * * * *kommando/manus

Kör ett cronjobb klockan 5 varje dag

Lägg till nedanstående rad i crontab -filen för att schemalägga ett cron -jobb som ska köras klockan 5 varje dag:

0 5 * * *kommando/manus

Kör ett cron -jobb kl 17 varje dag

Lägg till nedanstående rad i crontab -filen för att schemalägga ett cron -jobb som ska köras kl. 17 varje dag:

0 17 * * *kommando/manus

Kör ett cron -jobb klockan 9 den första dagen i varje månad

Lägg till nedanstående rad i crontab -filen för att schemalägga ett cron -jobb som ska köras kl 9 den första dagen i varje månad:

0 9 1 * *kommando/manus

Kör ett cron -jobb varje timme var 15: e mars

Om du vill schemalägga ett cron -jobb varje timme den 15 mars lägger du till raden nedan i crontab -filen:

0 * femton 3 *kommando/manus

Kör ett cron -jobb var 5: e timme

För att schemalägga ett cron -jobb var femte timme, lägg till raden nedan i crontab -filen:

0 * /5 * * *kommando/manus

Kör ett cron -jobb var 15: e minut

Om du vill schemalägga ett cron -jobb att köras var 15: e minut lägger du till raden nedan i crontab -filen:

* /femton * * * *

Använda strängar

Följande strängar kan också användas för att definiera ett jobb:

  1. @varje timme: Att utföra ett jobb en gång i timmen, dvs. 0 * * * *
  2. @midnatt: Att utföra ett jobb en gång varje dag, dvs. 0 0 * * *
  3. @dagligen: samma som midnatt
  4. @varje vecka: Att utföra ett jobb en gång i veckan, dvs. 0 0 * * 0
  5. @en gång i månaden: Att utföra ett jobb en gång i månaden, dvs. 0 0 1 * *
  6. @årligen: Att utföra ett jobb en gång varje år, dvs. 0 0 1 1 *
  7. @årlig: samma som @årligen
  8. @reboot: Att utföra ett jobb en gång vid varje start

Till exempel, för att köra ett skript eller kommando varje vecka, skulle posten i crontab -filen vara:

@veckokommando/manus

Fördefinierade Cron -kataloger

Det finns några fördefinierade cron-kataloger i Linux där de lagrade skripten körs automatiskt. Om vi ​​placerar något skript under dessa kataloger körs det automatiskt vid den konfigurerade tiden.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron. månadsvis
  • /etc/kr. varje vecka

Till exempel, för att köra ett skript en gång varje månad, måste du placera det i /etc/cron.monthly.

Visa Cron -jobb

Visa jobb för den aktuella användaren

Använd följande kommando för att visa alla schemalagda cron -jobb för den aktuella användaren:

$crontab-de

Visa jobb för rotanvändarna

Om du vill visa alla schemalagda jobb för rotanvändaren, utfärdar du följande kommando i Terminal:

$katt /etc/crontab

Du måste vara inloggad som en rotanvändare eller köra kommandot som sudo.

Visa jobb för de andra användarna

Om du vill visa alla schemalagda jobb för en specifik användare, utfärdar du följande kommando i Terminal och ersätter det med det faktiska användarnamnet:

$sudocrontab-u <Användarnamn> -de

För att köra detta kommando behöver du sudo -privilegier.

Visa jobb per timme

Om du vill visa alla cron -jobb som är konfigurerade för att köras varje timme, utfärdar du följande kommando i Terminal:

$ls -de /etc/cron. varje timme

Visa dagliga cron -jobb

Om du vill visa alla cron -jobb som är konfigurerade för att köras dagligen, utfärdar du följande kommando i Terminal:

$ls -de /etc/cron.daily/

Visa veckovisa cron -jobb

Om du vill visa alla cron -jobb som är konfigurerade för att köras varje vecka, utfärdar du följande kommando i Terminal:

$ls -de /etc/cron. varje vecka/

Visa månatliga cron -jobb

Om du vill visa alla cron -jobb som är konfigurerade för att köras varje månad, utfärdar du följande kommando i Terminal:

$ls -de /etc/månadsvis/

Säkerhetskopiera alla Cron -jobb

Det rekommenderas att du håller en säkerhetskopia av alla cron -jobb i en fil så att du kan återställa vid radering. Om du vill säkerhetskopiera alla nuvarande jobb använder du omdirigeringsoperatören för att omdirigera utmatningen från crontab -l till en fil.

$crontab-de >backup_cron.txt

Ta bort alla schemalagda Cron -jobb

För att ta bort alla schemalagda cron -jobb använder du -r -flaggan enligt följande:

$crontab-r

Cron -tillstånd

Vi kan begränsa åtkomsten till crontab -kommandot genom två filer: / etc/cron.allow och/etc/cron.deny.

  • /etc/cron.allow - Lägg till användare (en per rad) som du vill ge åtkomst till crontab -kommandon. Dessa användare kan köra schemalagda jobb.
  • /etc/cron.deny - Lägg till användare (en per rad) som du vill neka åtkomst till crontab -kommandon. Dessa användare kan inte köra schemalagda jobb.

Crontabs syntaxgeneratorer

Det finns några webbplatser som gör det möjligt att generera syntax för crontabs. Dessa webbplatser gör det lättare att skapa crontab -uttryck utan att behöva komma ihåg syntaxen. Även om det finns olika webbplatser tillgängliga för syntaxgeneratorer som t.ex. crontabgenerator.com , crontab-generator.org , och cronmaker.com . Den som jag mest föredrar och fann användbar är crontab.guru . Baserat på användarinmatning genererar det ett crontab-uttryck som du kan kopiera-klistra in i crontab-filen.

Slutsats

I den här självstudien har vi förklarat grunderna i cron -jobb, dess syntax och hur du konfigurerar det. Vi har också diskuterat hur man ser cron -jobb, skapar en säkerhetskopia och tar bort dem om det inte längre behövs.