Zjistíte, že existuje mnoho úkolů, které je třeba na vašem systému Linux pravidelně provádět. Můžete například potřebovat aktualizovat databázi nebo zálohovat data uživatelů v adresáři /home/. I když byste tyto úlohy mohli spouštět ručně, bylo by efektivnější (a spolehlivější), kdybyste systém Linux nakonfigurovali tak, aby je spouštěl automaticky za vás.
Jednou z možností, jak toho dosáhnout, je použít cron. Démon cron (/usr/sbin/cron) vám umožňuje naplánovat úlohy, které pro vás budou prováděny podle pravidelného plánu.
Syntaxe souboru crontab
Démon cron je nainstalován a aktivován ve výchozím nastavení na systémech Linux. Jednou za minutu zkontroluje, zda byly pro aktuální čas definovány nějaké úlohy. Démon cron používá soubor nazvaný crontab který obsahuje seznam úloh a kdy mají být spuštěny. Soubor crontab existuje pro celý systém Linux. Každý uživatel v systému může také definovat svůj vlastní soubor crontab.
Každý řádek v souboru crontab definuje jednu úlohu cron. Prvních pět polí (oddělených mezerami – mezerami nebo tabulátory) definuje, kdy
se má úloha cron spustit. Používají následující syntaxi:
Číslo pole | Štítek pole | Rozsah |
---|---|---|
1 | Minuty | 0–59 |
2 | Otevírací doba | 0–23 |
3 | Den v měsíci | 1–31 |
4 | Měsíc | 1–12 |
5 | Den v týdnu | 0–7 |
V uživatelském souboru crontab určují následující pole (pole šest a výše) příkaz a jeho volbu, pokud nějaká existuje. V systémovém souboru crontab šesté pole určuje uživatele, který má být použit k provedení příkazu ve zbývajících polích (pole sedm a výše).
Démon cron může spouštět jakýkoli příkaz nebo skript shellu. Při spuštění příkazu nebo shellového skriptu však není k dispozici žádná interakce uživatele.
Níže jsou uvedeny pokyny pro konfiguraci těchto polí:
- Pokud chcete, aby se úloha spouštěla každou minutu, hodinu, den nebo měsíc, zadejte do příslušného pole hvězdičku (*).
- Do pole v seznamu můžete zahrnout několik položek oddělených čárkami.
- Můžete zadat rozsah s počáteční a koncovou hodnotou oddělenými pomlčkou.
- Časové kroky můžete nakonfigurovat pomocí /n (kde n představuje velikost kroku).
- Měsíce a dny v týdnu můžete určit pomocí prvních tří písmen jejich názvů (například PO, ÚT, JAN, ÚNO). V písmenech se nerozlišují velká a malá písmena. Když však používáte písmena, nemůžete používat rozsahy ani seznamy.
- Čísla představující dny v týdnu začínají na 0 pro neděli a probíhají postupně celým týdnem, přičemž 7 opět představuje neděli. Například 3 je středa a 6 je sobota.
Definování uživatelských úloh
Uživatelé vytvářejí a udržují své vlastní soubory crontab pomocí příkazu crontab. S příkazem crontab lze použít následující možnosti:
Možnost | Popis |
---|---|
crontab -e | Vytváří nebo upravuje úlohy. Používá se editor vi. |
soubor crontab | Nahradí jakýkoli existující soubor crontab pro aktuálního uživatele zadaným souborem za předpokladu, že soubor obsahuje seznam úloh se správnou syntaxí. |
crontab -l | Zobrazuje aktuální úlohy. |
crontab -r | Smaže všechny úlohy. |
Předpokládejme například, že chcete definovat úlohu cron, která zkopíruje obsah domovského adresáře vašeho uživatele na externí jednotku USB připojenou v /media/USB každou noc v 17:05. Budete muset provést následující:
1. Otevřete relaci terminálu.
2. Do příkazového řádku zadejte „crontab -e“.
# crontab -e
Pokud je to poprvé, co definujete úlohu cron, vytvoří se pro vašeho uživatele prázdný soubor crontab.
3. Stiskněte klávesu I a zadejte následující:
5 17 * * * cp ~/* /media/USB
4. Stiskněte Esc a zadejte „:wq!“.
5. Můžete určit, kteří uživatelé mohou vytvářet úlohy cron a kteří ne, vytvořením následujících dvou souborů:
- /etc/cron.allow :Uživatelé uvedení v tomto souboru mohou vytvářet úlohy cron.
- /etc/cron.deny :Uživatelé, kteří nejsou uvedeni v tomto souboru, mohou vytvářet úlohy cron.
Pokud soubor /etc/cron.allow existuje, je to jediný hodnocený soubor; /etc/cron.deny bude v této situaci ignorován. Pokud žádný z těchto souborů neexistuje, může definovat uživatelské úlohy cron pouze uživatel root.