Crontab Manual – Schemaläggning av uppgifter i Linux

Att utföra samma uppgifter om och om igen, vare sig det är dagligen, veckovis eller månadsvis, är en uppgift som med tiden tröttnar och urartar, beroende på dess komplexitet, där vi lämnar det åt sidan. Lösningen på detta problem är att automatisera det så mycket som möjligt. Precis som Windows tillåter oss att automatisera vissa uppgifter, Linux erbjuder oss också detta alternativ genom Crontab, men inte exklusivt.

Om vi ​​vill automatisera driften av Linux, vare sig det är för att göra en säkerhetskopia, för att generera rapporter, för att ändra konfigurationen eller för något annat, är lösningen att använda Crontab i kombination med Cron, eftersom vi, till skillnad från Windows, behöver två minsta applikationer.

Crontab manual

Vad är Crontab?

Crontab är en textfil där automatiseringar skapas utifrån en rad parametrar, en textfil alltså läst av Cron . Båda applikationerna finns tillgängliga i de flesta av de vanligaste Linux-distributionerna, så det är inte nödvändigt att installera något arkiv på vår dator för att kunna använda dem.

Crontab erbjuder oss en serie skript, ett per rad, som låter oss anpassa den exakta tid som vi vill att utföra en eller flera uppgifter och deras upprepningar över tiden. Faktum är att dess namn kommer från det grekiska ordet Cronos , vilket betyder tid. Varje skript innehåller information om det exakta datumet då det ska köras, vilket datum indikeras med en serie siffror. För exempel, en knapp. Följande skript kommer att köras nfsfind varje söndag klockan 5:30 på morgonen

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

De två första siffrorna representerar timmen då kommandot kommer att utföras, den första siffran är minuten och den andra timmarna. Tidsformatet som används av Crontab är 24 timmar, så om vi vill utföra uppgiften klockan 5 på eftermiddagen skulle detta vara siffran 17. Asteriskerna representerar alla värden, medan siffran 0 motsvarar söndagar.

Blanda inte ihop Cron med Crontab

Medan Crontab tillåter oss att utföra vårt system automatiseringar , dessa exekveras, men inte uteslutande, med Cron-applikationen, en applikation som körs i bakgrunden och som utför alla uppgifter som vi tidigare har konfigurerat i Crontab. Denna applikation använder vår systemtid för att utföra dem, så det är viktigt, om vi använder en virtuell maskin, att både tidpunkten för gästmaskinen och den för vår dator alltid är densamma, eftersom annars den programmerade tiden inte kommer att vara korrekt.

Cron läser innehållet i Crontab-filen varje minut, så vi kan redigera den när som helst för att utföra uppgifter som vi vill utföra i samma session, utan att behöva tvinga applikationen att läsa dess innehåll igen för att hitta nya skript att köra.

Alla användare har inte möjlighet att skapa Crontab-filer för att automatisera systemuppgifter. Systemadministratören har möjlighet att tillåta eller neka detta alternativ genom filen cron.allow respektive cron.den, filer som finns i /etc/cron.do /etc/ beroende på vilken version av Linux-distributionen vi har. installerat på vår dator.

Hur man automatiserar uppgifter i Linux

Som vi har nämnt ovan börjar Crontab-skript med det datum vi vill att de ska köras följt av kommandot. Crontab-syntaxen är som följer.

Schemahantering

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minut, detta kan vara från 0 till 59
  • Tid, som vi har nämnt, använder Crontab 24-timmarstid, så intervallet för siffror är från 0 till 23.
  • Dag i månaden, det är inte mycket mystik, i denna parameter eftersom den går från 1 till 31.
  • Månad, från 1 till 12
    • januari 1
    • februari 2
    • mars 3
    • april 4
    • Maj 5
    • juni 6
    • juli 7
    • augusti 8
    • september 9
    • oktober 10
    • november 11
    • December 12.
  • Veckodag, från 0 till 6, söndag är siffran 0 även om vissa versioner av Crontab även tillåter att siffran 7 används. På så sätt är koden för veckodagarna
    • 0 söndag
    • 1 måndag
    • 2 tisdag
    • 3 onsdag
    • 4 torsdag
    • 5 fredag
    • 6 lördag

Men dessutom kan vi också använda asterisken (*) för att specificera alla möjliga värden för en variabel. Om vi ​​vill upprätta flera värden kan vi göra det genom kommatecken (,) eller ett värdeintervall som skiljer dem åt med ett bindestreck (-). Vi kan också ställa in olika steg med "/".

Om det fortfarande inte är särskilt tydligt visar vi dig tidskoderna som vi kan använda för att utföra uppgifter med jämna mellanrum beroende på deras periodicitet

  • 0 * * * * Med hjälp av tidskoden kommer skriptet att köras varje timme på timmen.
  • 0 0 * * * Varje dag kommer skriptet endast att köras en gång
  • 0 0 * * 0 Skriptet körs en gång i veckan
  • 0 0 1 * * Kommer att utföras en gång i månaden
  • 0 0 1 1 * Skriptet kommer att köras en gång om året

När vi väl är tydliga med hur uppgiftsschemaläggning fungerar i Crontab är det första vi ska göra att skapa filen där vi ska skapa alla processer vi vill automatisera med följande kommando

crontab nombre-archivo

Om vi ​​inte vill skapa en ny, eller om vi redan har skapat den och vill redigera den, använder vi detta kommando

crontab -e

Om vi ​​vill ta bort den skapade Crontab-filen

crontab -d

Med följande kommando kan vi lista alla uppgifter som ingår i Crontab-filen

crontab -d

Systemadministratörer kan begränsa användningen av systemautomatisering genom att redigera cron.allow- eller cron.den-filerna, filer som finns i /etc/cron.d/ eller /etc/ om vi inte tidigare har ändrat deras plats.

automatisera uppgifter

För att redigera Crontab-filen som vi har skapat kommer vi att använda textredigeraren som ingår i alla Linux-distributioner, även om vi också kan redigera den direkt från Crontab genom att lägga till variabeln -e.

nano nombrearchivo

Vi introducerar den numeriska koden tillsammans med asterisker och skriptet som vi vill köra. Därefter måste vi ge Cron behörighet att köra den, annars kommer den inte att veta om dess existens och kommer aldrig att kunna köra den. För att göra detta kommer vi att använda kommandot

chmod ugo+x nombrearchivo

Inledningsvis verkar det inte alls vara lätt att använda Crontab för att automatisera uppgifter och påminner om Linuxs (nästan vanliga) behov av att tillgripa kommandoraden för praktiskt taget allt, och därmed begränsa fler användare från att ta till sig Linux som operativsystem på en dag- i dag. .

Windows-uppgiftsschemaläggaren använder ett grafiskt gränssnitt som inte är särskilt lätt att använda utan nödvändig kunskap, men det är mycket mer intuitivt än det som erbjuds av Linux via kommandoraden.

Crontab och Cron arbetsexempel

Det första vi måste göra för att automatisera uppgifter i Linux är att skapa filen där vi ska inkludera alla kommandon som vi vill ska köras på datorn vid den tidpunkt vi konfigurerar. I det här exemplet kommer vi att skapa "test"-filen som kommer att ansvara för att ta bort alla filer och tomma mappar som finns i tmp-katalogen. För att göra det kommer vi att ange följande kommando.

crontab prueba

Därefter måste vi ange kommandot (eller kommandon som separerar dem med semikolon ";" utan citattecken). I det här exemplet kommer vi att använda Crontab för att ta bort filerna i tmp-mappen.

find /tmp -type f -empty -delete

Därefter redigerar vi filen för att lägga till schemat, det vill säga när vi vill att uppgifterna som vi har angett i filen ska köras.

crontab -e

För att det ska köras varje dag klockan 10 på morgonen måste vi lägga till 0 10 * * * före skriptet och lämna raden enligt följande

0 10 * * * find /tmp -type f -empty -delete

Om vi ​​vill att det ska köras vid ett annat tillfälle måste vi bara ändra siffran 10 för timmen (i 24-timmarsformat) som vi vill att den ska köras. Vi kan också använda tidskoder som vi har visat i avsnittet Programmeringshantering för att konfigurera det. Slutligen använder vi följande kommando så att Cron kan köra automatiseringsfilen som vi har skapat.

[code]chmod ugo+x prueba

Alternativ till Cron

Som vi har nämnt i tidigare avsnitt är Cron ansvarig för att utföra de kommandon som vi tidigare har angett i Crontab. Cron är ett perfekt verktyg för team som är igång 24 timmar om dygnet, även om vi också kan anpassa det till vårt arbetsschema, även om det tar resurser från teamet medan uppgifter utförs. Om vi ​​letar efter enklare alternativ till Cron, så visar vi dig några av de bästa alternativen.

anakron

Anacron tillåter oss att schemalägga det automatiska utförandet av uppgifter på en dag, vecka eller månad, när som helst. Om datorn är avstängd kommer den uppgift som vi tidigare har angett i Crontab att utföras nästa gång vi startar datorn. Med Cron, om datorn är avstängd på angivet datum, kommer uppgiften inte att utföras när vi sätter på datorn. Anacron är tillgängligt i de flesta Linux-distributioner och vi kan installera det på datorn genom följande kommando.

sudo apt install anacron

Cronie

Cronie erbjuder oss en mycket mer komplett upplevelse än Cron, och en liten uppsättning applikationer (bland annat Anacron ingår) och med vilka vi kan programmera arbetsflöden mycket snabbt och enkelt genom Crontab. Till skillnad från Anacron, för att installera Cronie, är det inte tillgängligt i Linux-förråden, så vi måste besöka dess webbsida på GitHub för att ladda ner det, eller använd följande kommando.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz