Plánování pravidelných úloh pomocí Cron v Linuxu
cron
je linuxový program, který se používá k naplánování příkazu nebo skriptu, který se má provést později. Lze jej také použít k plánování periodicky spouštěných příkazů a skriptů. Programy naplánované pomocí cronu se běžně označují jako Cron Jobs. Jeho hlavní použití je pro úlohy správy systému, jako je pravidelné zálohování, pravidelné aktualizace softwaru a další podobné úkoly údržby.
Úvod
cron
běží jako démon v Linuxu, tedy jako proces na pozadí. Umožňuje uživatelům plánovat úlohy přímo pomocí příkazu crontab, který v editoru otevře konfigurační soubor s názvem Cron File. Pro každého uživatele jsou vytvořeny samostatné soubory Cron.
Vytvoření souboru Cron a základní syntaxe
The crontab
příkaz lze provést pomocí -E
příznak pro úpravu existujícího souboru Cron. Pokud soubor ještě neexistuje, bude vytvořen. Pokud uživatel volá příkaz poprvé a pokud je v systému Linux nainstalováno více editorů souborů, příkaz požádá uživatele, aby si ze seznamu editorů vybral výchozí editor.
Po výběru editoru se vytvoří a otevře soubor cron pro uživatele. Nyní můžete zadat úlohy v souboru.
Obecná syntaxe pro specifikaci úlohy Cron je:
V podstatě, poběží v zadanou „minutu“ (0-59), „hodinu“ (0-23), „den v měsíci“ (1-31), měsíc (1-12), den v týdnu, (0-7, Pro neděli lze v Cron Job použít 0 nebo 7). Pro zjednodušení uveďme příklad:
1 2 3 4 5 echo "Ahoj"
To znamená příkaz echo "Ahoj"
poběží každý pátý den v týdnu (pátek) a každý 3. den v měsíci, každý 4. měsíc v roce (duben), v čase 02:01 (2. hodina první minuty).
Pokud má být stejný příkaz spuštěn každý den v 02:01, syntaxe bude vypadat takto:
1 2 * * * echo "Ahoj"
The *
znamená „vždy“ nebo „pro všechny“, např. pro všechny měsíce, pro všechny dny v týdnu atd.
Příkazový operátor (,
) lze použít k zadání seznamu hodnot, kdy se má úloha opakovat. Například:
0 2,3,4 * * * echo "Ahoj"
Program bude spuštěn každý den ve 2:00, 3:00 a 4:00.
Podobně, pomlčka (-
) operátor lze použít k určení rozsahu, pro který se má úloha opakovat. Například:
0-20 2 * * * echo "Ahoj"
Tím se program spustí v 02:00, 02:01, 02:02 a tak dále až do 02:20.
Konečně máme lomítko ( /
) operátor. Tento operátor slouží k zadání hodnoty intervalu, podle kterého se bude úloha opakovat. Např. */15
v poli minut znamená, že úkol by se měl opakovat každých 15 minut. 2-10/2
v poli hodiny určuje, že se úkol bude opakovat mezi 2:00 a 10:00 po každých 2 hodinách (2:00, 4:00, 6:00, 8:00, 10:00).
*/15 2-10/2 * * * echo "Ahoj"
Po provedení záznamu v souboru Cron soubor uložte a ukončete editor.
Měli byste vidět a "instalace nového crontabu" zprávu v terminálu po uložení a opuštění souboru crontab.
Makra
V Cron jsou předdefinována určitá makra, která určují některé běžně požadované časové intervaly, například každou hodinu, každý den, každý měsíc atd.
Chcete-li spustit úlohu jednou denně na začátku dne, tj. v 00:00, použijte makro @denně
. Toto je ekvivalentní 0 0 * * *
.
Můžete to vložit do souboru Cron stejným způsobem, jak bylo popsáno výše.
Podobným způsobem lze použít i ostatní makra, viz. @hodinově
(0 minuta každé hodiny), @měsíční
(00:00 prvního dne v měsíci), @týdně
(00:00 prvního dne v týdnu, @roční
(00:00 prvního ledna každého roku), @restartovat
(při každém spuštění počítače).
Závěr
V tomto článku jsme se naučili, jak přidat Cron Jobs pro běžné spouštění v Linuxu. Správné používání Cron Jobs se hodí i pro ty nejobtížnější manuální úkoly, kterým uživatel čelí, např. pravidelné mazání starých protokolů, archivace všech druhů studených dat (data, která jsou zřídka dostupná) atd.