Spouštějte úlohu Cron každou minutu

Run Cron Job Every Minute



Pokud chcete na Linuxu spustit program nebo skript na pozadí, pak je cron job velmi důležitý. Pomocí úloh cron můžete po daném časovém intervalu spustit program nebo skript na pozadí.

Podívejme se na některé příklady reálného života cron jobů.







  • Řekněme, že vlastníte webovou stránku a chcete všem uživatelům vašich webových stránek poslat e -mail každý den. Jediné, co musíte udělat, je napsat skript pro odesílání e -mailů a nastavit úlohu cron, která tento skript spustí každý den.
  • Řekněme, že vlastníte reklamní agenturu a chcete všem inzerentům, jejichž zůstatek je nižší než 5 $, připomenout dobíjení. Jediné, co musíte udělat, je napsat skript, který zkontroluje zůstatek všech inzerentů, a když je pod 5 $, odešle oznámení na mobilní číslo nebo e -mail inzerenta. Poté nastavte úlohu cron, aby skript běžel každých 5 až 10 minut nebo každou hodinu.

V Linuxu existuje mnoho dalších použití úloh cron.



V tomto článku vám ukážu, jak v Linuxu spouštět úlohy cron každou minutu. K ukázce použiji Debian 9 Stretch. Můžete však použít libovolnou moderní distribuci Linuxu podle vašeho výběru. Začněme.



V systému Linux nemusíte být vykořenit za účelem spouštění úloh cron. Úlohy cron můžete spouštět jako každý uživatel. Každý uživatel Linuxu může použít crontab soubor pro spuštění vlastní sady úloh cron.





Ve výchozím nastavení uživatel nemá crontab soubor na Linuxu. Můžete vytvořit a crontab soubor s následujícím příkazem:

$crontab-A



Pokud tento příkaz spouštíte poprvé, měli byste být vyzváni k výběru textového editoru ze seznamu. Vyberu nano , výchozí. Můžete si vybrat ten, který se vám líbí. Jakmile budete hotovi, stiskněte .

The crontab soubor by měl být vytvořen (pokud již není k dispozici) a otevřít jej ve vašem oblíbeném textovém editoru. Nyní můžete na konec tohoto souboru přidat vlastní úlohy cron a jakmile budete spokojeni, stačí je uložit a ukončit práci s textovým editorem.

Syntaxe spuštění příkazu každou minutu:

Syntaxe souboru crontab soubor je následující:

minuta hodina denOfMěsíc měsíc dayOfWeek příkazToRun

Tady,

  • minuta může být 0 na 59 .
  • hodina může také být 0 na 59 .
  • den měsíce může být 1 na 31 .
  • Měsíc může být 1 na 12 .
  • den v týdnu může být 0 na 7 . 0 a 7 znamená neděle, 1 znamená pondělí, 2 znamená úterý a tak dále.

Spustit a příkazToRun každou minutu, měli byste to napsat do souboru crontab soubor takto:

* * * * *příkazToRun

Spuštění úlohy Crob každou minutu:

Nyní, když známe teorie, přidejme jednoduchý skript timer.sh do crontab soubor a podívejte se, jak jej spravovat.

V timer.sh skript, mám pouze následující řádky kódů. Vše, co dělá, je vytvořit nový soubor /home/shovon/bin/timer.log (pokud již neexistuje) a připojí k němu výstup příkazu date.

Nyní přidáme skript do našeho crontab a nechte ji běžet každou minutu s následujícím řádkem:

* * * * * /Domov/shovon/dopoledne/timer.sh

Jakmile uložíte crontab soubor a opusťte textový editor, nový crontab soubor by měl být nainstalován.

Po uplynutí minuty je nový soubor timer.log je vytvořen v požadovaném adresáři, jak můžete vidět v označené části níže uvedeného snímku obrazovky.

Z timer.log log souboru, je zřejmé, že skript timer.sh běží každou minutu.

Chytání chyb z úloh Cron:

Chcete -li zachytit chyby z úlohy cron, můžete je odeslat do souboru error.log soubor a normální výstupy do access.log například soubor. Soubory můžete samozřejmě pojmenovat, jak chcete.

Abych to předvedl, upravil jsem svůj skript timer.sh trochu. Nyní jsou chyby odeslány do error.log soubor v souboru / home / shovon / bin adresáře a výstupy jsou odeslány do access.log v / home / shovon / bin adresář.

Nejprve /tmp/i_must_be_here soubor neexistuje, takže se zobrazí chyba v souboru error.log soubor, jak vidíte.

The access.log soubor je v tuto chvíli prázdný.

Nyní vytvořím soubor /tmp/i_must_be_here

A jak vidíte, výstup je v souboru access.log soubor nyní.

Pokud chcete, můžete přesměrovat výstup a chyby ve stejném souboru následujícím způsobem:

Jak vidíte, výstupy STDIN a STDERR jsou odesílány do out.log soubor.

Zajistit, aby byla poslední zakázka dokončena Spuštění před opětovným spuštěním úlohy:

Aby to fungovalo, můžete vytvořit dočasný soubor těsně po spuštění úlohy a odebrat ji těsně před dokončením. Poté můžete před spuštěním úlohy zkontrolovat, zda dočasný soubor existuje. Pokud ano, můžete úlohu opustit a úlohu spustit, pouze pokud dočasný soubor není k dispozici.

Tento jednoduchý skript to dělá.

Jak vidíte, časovač.pid soubor je vytvořen.

Čtení access.log file dokazuje, že úloha cron se nespustí, dokud předchozí úloha cron neskončí. Jak vidíte, běželo v 01:32:01 a příště mělo běžet v 01:33:01, ale nestalo se. Místo toho běžel v 01:35:01, asi o 3 minuty později.

Organizace výstupů úlohy Cron pro snadné ladění:

Výstupy můžete pěkně naformátovat, aby bylo vaše ladění úlohy cron snazší.

Příklad, jak to lze provést, je uveden v následujícím skriptu.

Jak vidíte, výstupy, chyby a zprávy o úspěchu jsou pěkně vytištěny v souboru protokolu.

S cron jobem a shell skripty můžete dělat úžasné věci. Zde jsem předvedl některé nápady. Ale nebe je váš limit. Nebojte se experimentovat s jakýmikoli nápady, které máte. Děkujeme za přečtení tohoto článku.