Kör ett Cron -jobb varje minut

Run Cron Job Every Minute



Om du vill köra ett program eller skript i bakgrunden på Linux är cron -jobbet mycket viktigt. Med hjälp av cron -jobb kan du köra ett program eller skript i bakgrunden efter ett givet tidsintervall.

Låt oss ta en titt på några av de verkliga exemplen på cron -jobb.







  • Låt oss säga att du äger en webbplats och du vill skicka ett e -postmeddelande till alla användare på din webbplats varje dag. Allt du behöver göra är att skriva ett skript som skickar e -post och skapa ett cron -jobb för att köra det manuset varje dag.
  • Låt oss säga att du äger en reklambyrå och du vill påminna alla annonsörer vars saldo är under 5 $ för att ladda. Allt du behöver göra är att skriva ett skript som kontrollerar saldot för alla annonsörer och när det är under 5 $ skickar det ett meddelande till annonsörens mobilnummer eller e -post. Ställ sedan in ett cron -jobb för att köra skriptet var 5 till 10 minuter eller varje timme.

Det finns många andra användningsområden för cron -jobb i Linux.



I den här artikeln kommer jag att visa dig hur du kör cron -jobb varje minut på Linux. Jag kommer att använda Debian 9 Stretch för demonstrationen. Men du kan använda vilken modern Linux -distribution du vill. Låt oss börja.



På Linux behöver du inte vara det rot för att köra cron -jobb. Du kan köra cron -jobb som vilken användare som helst. Varje användare på Linux kan använda en crontab fil för att köra sin egen uppsättning cron -jobb.





Som standard har en användare inte en crontab fil på Linux. Du kan skapa en crontab fil med följande kommando:

$crontab-Och



Om du kör det här kommandot för första gången bör du bli ombedd att välja en textredigerare från listan. Jag väljer nano , standard. Du kan välja den du gillar. När du är klar trycker du på .

De crontab filen bör skapas (om den inte redan finns tillgänglig) och öppnas med din favorittextredigerare. Nu kan du lägga till dina egna cron -jobb i slutet av den här filen och när du är nöjd, bara spara den och lämna textredigeraren.

Syntax för att köra ett kommando varje minut:

Syntaxen för crontab filen är följande:

minut timme dayOfMonth månad dayOfWeek commandToRun

Här,

  • minut kan vara 0 till 59 .
  • timme kan också vara 0 till 59 .
  • dayOfMonth kan vara 1 till 31 .
  • månad kan vara 1 till 12 .
  • dag i veckan kan vara 0 till 7 . 0 och 7 betyder söndag, 1 betyder måndag, 2 betyder tisdag och så vidare.

Att köra a commandToRun kommando varje minut, bör du skriva det i crontab filen enligt följande:

* * * * *commandToRun

Kör ett Crob -jobb varje minut:

Nu när vi känner till teorierna, låt oss lägga till ett enkelt manus timer.sh till crontab fil och se hur du hanterar det.

I timer.sh skript, jag har bara följande koderader. Allt det gör är att skapa en ny fil /home/shovon/bin/timer.log (om det inte redan finns) och lägger till utdata från datumkommandot till det.

Låt oss nu lägga till manuset till vårt crontab och låt den gå varje minut med följande rad:

* * * * * /Hem/shovon/am/timer.sh

När du har sparat crontab fil och avsluta textredigeraren, den nya crontab filen bör installeras.

Efter en minut har en ny fil timer.log skapas i önskad katalog som du kan se i det markerade avsnittet på skärmdumpen nedan.

Från timer.log loggfil, är det uppenbart att skriptet timer.sh körs varje minut.

Fånga fel från Cron -jobben:

För att fånga fel från ett cron -jobb kan du skicka felen till en felloggen fil och normala utdata till access.log fil till exempel. Naturligtvis kan du namnge filerna vad du vill.

För att demonstrera detta ändrade jag mitt manus timer.sh lite grann. Nu skickas felen till felloggen filen i / home / shovon / bin katalogen och utgångarna skickas till access.log i / home / shovon / bin katalog.

Först /tmp/i_must_be_here filen finns inte, så jag får felet i felloggen filen som du kan se.

De access.log filen är tom för tillfället.

Nu ska jag skapa filen /tmp/i_must_be_here

Och som du kan se är utmatningen i access.log fil nu.

Om du vill kan du omdirigera utdata och fel i samma fil enligt följande:

Som du kan se skickas STDIN- och STDERR -utgångar till ut.logg fil.

Se till att det sista jobbet var klart innan du kör jobbet igen:

För att detta ska fungera kan du skapa en tillfällig fil strax efter att jobbet startat och ta bort den precis innan den är klar. Sedan kan du kontrollera om den tillfälliga filen finns innan jobbet startas. Om det gör det kan du avsluta jobbet och köra jobbet endast när den tillfälliga filen inte är tillgänglig.

Detta enkla manus gör just det.

Som du kan se, timer.pid filen skapas.

Läser access.log filen visar att cron -jobbet inte körs innan det föregående cron -jobbet har körts. Som du ser körde den 01:32:01 och nästa gång borde den ha körts 01:33:01, men det gjorde den inte. Istället sprang den 01:35:01, cirka 3 minuter senare.

Organisera Cron -jobbutgångar för enkel felsökning:

Du kan formatera utgångarna snyggt för att göra ditt cron -jobb lättare att felsöka.

Ett exempel på hur det kan göras ges i följande skript.

Som du kan se skrivs utmatningar, fel och framgångsmeddelanden snyggt ut i loggfilen.

Du kan göra fantastiska saker med cron -jobb och skalskript. Jag visade några av idéerna här. Men himlen är din gräns. Experimentera gärna med alla idéer du har. Tack för att du läste denna artikel.