Crontab - Om du har en servertung webbplats för närvarande kanske du vill köra vissa processer som att berika data eller generera miniatyrbilder i bakgrunden utan att störa användargränssnittet. Tja, Linux crontab har ett bra program som gör exakt det: Cron.

En introduktion till Cron

Så vad är det här programmet? Cron kategoriseras som en demon som kan utföra schemalagda kommandon. Det startas automatiskt när du anger flera användarnas körnivåer, från /etc/init.d. Den söker på spoolområdet vid / var / spool / cron / crontabs efter crontab-filer uppkallad efter kontona i / etc / passwd. För att få åtkomst till crontabs i den här katalogen måste du använda kommandot crontab istället för att direkt komma åt dem. Cron kan också läsa det lilla olika formatet / etc / crontab, samt filer i /etc/cron.d.

När den är konfigurerad vaknar Cron upp varje minut, undersöker lagrade Linux-crontabs och kontrollerar kommandot för att se om det finns något som ska köras. Om ett kommando exekveras och utgången genereras, skickas den sedan ut till crontabs ägare eller användaren i MAILTO-variabeln i crontab. Barnen kopior av cron som kör dessa processer namnges i versaler, som du kommer att se i ps och syslog output.

Cron kontrollerar också varje minut för ändringar i spolkatalogens modtime. Om det finns förändringar undersöker den modtiden för alla linux crontabs och laddar om de som har ändrats. Som ett resultat behöver cron inte starta om när en crontab-fil ändras.

När klockan ändras med tre timmar eller mindre finns det speciella överväganden som i början och slutet av sommartid. Om tiden går framåt kommer de jobb som ska köras under den överhoppade tiden att ändras så att de körs snart efter ändringen. I den andra änden, om tiden rör sig bakåt, kommer de jobb som faller under den upprepade tiden inte att återköras.

Endast jobb som körs vid en viss tidpunkt snarare än timjobb eller de som är markerade med '*' i minut / timspecifikationen påverkas. Jobb som anges med vilda bilar körs omedelbart baserat på den nya tiden. Vid klockförändringar på mer än tre timmar används den nya tiden omedelbart.

I Red hat och Debian behandlar cron cron.d-filerna som tillägg till linux crontab-filen eftersom de följer filens specialformat, vilket innebär att de inkluderar användarfältet. Denna funktion syftar till att tillåta paket som kräver finare schemaläggningskontroll än dagliga, månatliga eller veckokataloger. Sådana filer bör idealiskt namnges efter deras leverantörspaket. Filer måste överensstämma med den namnkonvention som används för kördelar, i det att de enbart måste bestå av stora och små bokstäver, siffror, bindestreck och understreck. Filerna i katalogen cron.d övervakas för ändringar, precis som linux crontab-katalogen. För kommandon som / bin / ls, se till att använda absoluta sökvägar för att ringa rätt kommando.

En introduktion till Linux Crontab

Nu när du känner till cron-ins och outs, låt oss titta noggrant på linux crontab, som är ett program för installation, avinstallation eller lista av tabellerna för att driva själva demonen. Varje användare kan ha en egen Linux-crontab och filerna är tillgängliga i crontabs-katalogen, men inte avsedda för direkt redigering.

Alla kommandon som ges i en Linux-crontab för en användare kommer att utföras som användaren äger den. Flikar, ledande mellanslag och tomma rader ignoreras vanligtvis. Linjer som har ett hash-tecken som första karaktär utan rymd ignoreras eftersom de behandlas som kommentarer. Det är värt att notera att kommentarer inte är tillåtna inom samma rader med cron-kommandon som de kommer att läsas som en del av kommandot. På en liknande anteckning är kommentarer inte heller tillåtna på rader med miljövariabla inställningar.

I en linux crontab, en aktiv rad med en cron-kommando eller miljövariabel inställning, som är i formen "name = value", där utrymmen kan läggas till vid behov runt lika-till-tecknet. Eventuella efterföljande icke-ledande mellanslag är en del av namnvärdet. Värdesträngen kan placeras i enstaka eller dubbla matchande citat för att bevara bakre eller ledande tomma utrymmen. Det är inte analyserat för miljöersättningar, så du kan hitta att rader som "PATH = $ HOME / bin: $ PATH" inte fungerar som förväntat.

Många miljöinställningar ställs automatiskt in av cron, till exempel att HOME och LOGNAME ställs in från användarens passwd-linje och SHELL som ställs in på / bin / sh och PATH är inställd på / usr / bin: / bin. Du kan åsidosätta PATH, SHELL och HOME genom inställningar av crontab. LOGNAME kan dock inte ändras eftersom det är den användare som jobbet körs från. På BSD-system kan denna variabel kallas USER, i vilket fall USER också kommer att ställas in.

Om skicka e-post är en del av kommandona som körs i linux crontab, kommer cron också att titta på MAILTO. Om variabeln är definierad och icke-tom, skickas ett e-postmeddelande till den namngivna användaren. Men om den är tom, skickas ingen e-post och ett e-postmeddelande skickas istället till linux crontab-ägaren. Om filen cron.allow är tillgänglig måste du anges i den för att använda detta kommando. Om den här filen inte finns men en cron.deny-fil finns bör du tas bort från den filen för att använda kommandot. Om ingen fil finns, kan bara superanvändaren använda kommandot beroende på platsberoende parametrar. Alternativt kan alla användare använda kommandot, vilket är fallet för vanliga Debian-system.

Om alternativet –u är tillgängligt ger det användarnamnet vars linux crontab kräver finjustering. Om det inte ges, undersöker crontab crontab för användaren som utför kommandot. Det är viktigt att använda detta alternativ alltid för säkerhets skull när du kör inuti su, eftersom linux crontab kan förväxlas av su. Alternativet -l är tillgängligt för den aktuella crontab som ska visas på standardutgången, medan alternativet -r tar bort den aktuella crontab. Kommandot -e används för att redigera den nuvarande linux crontab med redaktörer som anges av EDITOR eller VISUAL miljövariabler. Du kan inte använda någon redigerare som avlänkar och återskapar filen; du behöver en redaktör som redigerar filen på plats. Efter att ha lämnat redigeraren installeras den tweaked linux crontab automatiskt.

Modulen pam_env stöds också av cron på Debian GNU / Linux-systemet och laddar miljön som anges i modulfilen. Det bör dock noteras att PAM-inställningen inte åsidosätter de ovan nämnda inställningarna eller crontab-filinställningarna. Om du vill ha en PATH som skiljer sig från papperskorgen, måste du ställa in den i crontab-filen. Cron skickar som standard e-postmeddelanden med "text / vanlig" innehållstyp med teckenuppsättningsparametern inställd på koduppsättningen / karaktärskartan för det land där cron har startat, vilket är standardsysteminställningen utan någon miljövariabel uppsättning, eller det språk som variablerna ställer in. Du kan lägga till dina egna teckenkodningar för e-postutgången genom att ställa in variablerna 'Content_Transfer_Encoding' och 'Content_Type' i crontabs för att matcha postens rubriker för namnen.

Rekommenderade kurser

  • Online R Studio Anova Techniques Course
  • Certifieringsträning i AngularJS
  • ISTQB nivå 1 certifieringskurs
  • Certifieringsträning i grunderna för programtestning av programvara

Arbetar med Crontab

Kommandot crontab, som finns i Unix-liknande och Unix-operativsystem, kan nås via en terminal. För att se vilken crontab som för närvarande kör, öppnar du en terminal på ditt system och kör följande kommando:

$ sudo crontab -l

För att redigera crontab-jobblistorna kan du använda följande kommando:

$ sudo crontab -e

Detta kommando öppnar standardredigeraren i ditt system, som kan vara pico eller vio, för att ändra crontab. Spara och avsluta redigeraren för att spara crontab-jobbet i din crontab-fil. Crontab jobb eller cronjobs kan skrivas så:

* * * * * /bin/execute/this/script.sh

Det finns fem asterisker i kommandot ovan, var och en representerar olika datumdelar för att schemalägga jobbet. Här är de:

  1. Minut, från noll till 59
  2. Timme, från noll till 23
  3. Månadens dag, från en till 31
  4. Månad, från en till 12
  5. Veckodagen, från noll till sex, med noll betyder söndag

Listan ovan har givits i ordning, så du måste definiera minut först, följt av timme, dag i månad, månad och veckodag. Du kan behålla asterisken om du inte vill definiera något av fälten, men det är viktigt att notera att symbolen betyder "alla". Om du lämnar alla fem fält obegränsade med asteriskerna intakt, betyder det varje minut varje timme, varje dag varje vecka och varje månad.

Låt oss nu anta att du bara vill köra ett manus varje middag på en söndag, här är vad du gör:

0 12 * * 0 /bin/execute/this/script.sh

Nu körs skriptet när systemklockan träffar 1200 timmar varje söndag, varje vecka varje månad. Nu, om du vill köra skriptet varje arbetsdag klockan 12, här är vad du skriver:

0 12 * * 1-5 /bin/execute/this/script.sh

Cron kör kommandon när fälten år, månad, timme och minut matchar aktuell tid, eller när åtminstone dagen i månaden och året matchar aktuell tid. Ett fält kan markeras med en asterisk för att beteckna "först-sista". Nummerintervall är tillåtna, med områdena två nummer som är separerade med bindestreck. Det specifika intervallet är inkluderande, så ett intervall på 8-11 för "timmar" anger körning vid åttonde, nionde, tionde och elfte timmen. Listor stöds också, med varje nummer separerat med komma, t.ex. '1, 2, 8, 9'. Du kan blanda och matcha också, så det kan vara '1, 2, 8-11'.

Du kan använda stegvärden i samband med områdena med '/' efter ett intervall som anger ett hopp över värdet på numret genom intervallet. Till exempel anger '0-11 / 2' i timmarfältet kommandoteknik varannan timme, som skulle skrivas som en lista på så sätt: '0, 2, 4, 6, 8, 10'. Steg kan tillåtas efter en asterisk, som '* / 2' för att ange ett kommando som ska utföras varannan timme. För fältet dag och månad kan du använda de tre första bokstäverna för den specifika dagen eller månaden, och ärendet spelar ingen roll. Listor och namnintervall stöds dock inte. Exekveringsdagen kan anges i två fält: veckodag och månadsdag. Om båda fälten är begränsade, kommer kommandot att köras när båda fälten matchar.

Resten av raden är det "sjätte" fältet, som anger kommandot som ska köras. Kommandodelen av raden tar upp till en ny linje eller upp till% karaktär. Det exekveras av sh eller av det angivna skalet i crontab-filens SHELL-variabel. % I kommandot kommer att ändras till newline-tecken om de inte undviks med backslashen '\'. Alla data efter det första% -tecknet skickas som standardinmatning till kommandot. Du kan inte dela en kommandorad i flera rader.

Schemalägga trick på Crontab

Formateringen kan ta lite att vänja sig, men här är några trick som hjälper dig. Om du vill köra en cronjob var tionde minut kan du antingen skriva det på detta sätt:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Eller så kan du skriva det på detta sätt, vilket är lättare:

* / 10 * * * * /bin/execute/this/script.sh

Du har också speciella ord som du kan lägga till för det första minutfältet istället för ett nummer, så:

  • @reboot: detta skulle köra skriptet en gång vid systemstart
  • @år: för att köra kommandot en gång om året (det alternativa formatet skulle vara "0 0 1 1 *")
  • @ årligen: ett alternativ till det årliga nyckelordet
  • @monthly: för att köra kommandot en gång i månaden ("0 0 1 * *")
  • @ veckovis: att springa en gång i veckan (“0 0 * * 0”)
  • @ dagligen: att springa en gång i veckan (“0 0 * * *”)
  • @ midnatt: ett alternativ till det dagliga nyckelordet
  • @hourly: att köra varje timme (“0 * * * *”)

Utmatningslagring

Som standard sparar cron utskriften från jobbet till användarens postlåda eller rot. Men du kan göra utgången enklare och mer presentabel genom att spara den i en separat loggfil. Så här gör du det:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux kan rapportera på olika nivåer. Du har standardfel STDERR och standardutgång STDOUT, markerade som 2 respektive 1. Följande uttalande berättar att lagra STDERR och STDOUT båda, för att skapa en enda dataström med meddelanden och fel:

2> & 1

Så vi har definierat produktionsströmmen, nu måste vi ge den en destination. ">" Skriver över filen och ">>" lägger till den. För att lägga till, vilket alltid är säkrare, kan du använda följande kommando:

>> /var/log/script_output.log

Slutsats

Som du ser låter cron dig ställa in uppgifter som ska köras automatiskt med regelbundna intervall i bakgrunden. Detta möjliggör automatiskt skapande av säkerhetskopior, schemaläggning av uppdateringar, synkronisering av filer och mycket mer. Allt detta och mer kan du göra med crontab.

Rekommenderade artiklar: -

Här är några artiklar som hjälper dig att få mer information om Linux Crontab så bara gå igenom länken.

  1. Linuxintervjufrågor och svar | Användbart och mest frågat
  2. Karriärer i Linux
  3. Topp 10 användbara Linux-appar för systemadministratörer
  4. Linux vs Windows 10

Kategori: