Úvod
Existuje démon v Linuxu nazvaný cron, který se používá k běhu procesů v pravidelných intervalech.
Způsob, jakým to dělá, je zkontrolovat, zda některé složky ve vašem systému spouštějí skripty. Například je složka nazvaná /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly a /etc/cron.monthly. K dispozici je také soubor nazvaný / etc / crontab.
Ve výchozím nastavení můžete jednoduše umístit skripty do příslušných složek, abyste je mohli spustit v pravidelných intervalech.
Otevřete například okno terminálu (stisknutím kláves CTRL, ALT a T) a spusťte následující příkaz ls :
ls / etc / cron *
Zobrazí se seznam programů nebo skriptů, které se spouštějí hodinově, denně, týdně a měsíčně.
Problémem s těmito složkami je, že jsou trochu nejasné. Například denní znamená, že skript bude spuštěn jednou denně, ale nemáte kontrolu nad časem, kdy skript bude spuštěn během daného dne.
Zde přichází soubor crontab.
Úpravou souboru crontab můžete získat spuštěný skript nebo program přesné datum a čas, kdy chcete spustit. Například možná chcete zálohovat soubory každou noc v 18 hodin.
Oprávnění
Příkaz crontab vyžaduje, aby uživatel měl oprávnění k úpravě souboru crontab. V podstatě existují dva soubory, které se používají ke správě oprávnění crontab:
- /etc/cron.allow
- /etc/cron.deny
Pokud soubor /etc/cron.allow existuje, uživatel, který chce upravit soubor crontab, musí být v daném souboru. Pokud soubor cron.allow neexistuje, ale existuje soubor /etc/cron.deny, uživatel nesmí v tomto souboru existovat.
Pokud existují oba soubory, pak /etc/cron.allow přepíše soubor /etc/cron.deny.
Pokud žádný soubor neexistuje, záleží na konfiguraci systému, zda uživatel může upravit crontab.
Uživatel root může vždy upravit soubor crontab. Můžete buď použít příkaz su pro přepnutí na uživatele root nebo příkaz sudo pro spuštění příkazu crontab.
Úprava souboru Crontab
Každý uživatel, který má oprávnění, může vytvořit vlastní soubor crontab. Příkaz cron v podstatě hledá existenci více souborů crontab a prochází je všemi.
Chcete-li zkontrolovat, zda máte soubor crontab, spusťte následující příkaz:
crontab -l
Pokud nemáte soubor crontab, objeví se zpráva "no crontab for
Chcete-li vytvořit nebo upravit soubor crontab, spusťte následující příkaz:
crontab -e
Ve výchozím nastavení, pokud není vybrán žádný výchozí editor, budete vyzváni k výběru výchozího editoru, který chcete použít. Osobně se mi líbí nano, protože je poměrně jednoduché a běží z terminálu.
Otevřený soubor má spoustu informací, ale klíčovou součástí je příklad těsně před koncem části komentáře (komentáře jsou označeny řádky začínajícími čísly #).
# mh dom mon dow příkaz
0 5 * * 1 tar -zcf /var/backups/home.tgz / home /
Existuje 6 informací, které se vejde do každého řádku souboru crontab:
- Minutu, kdy má být příkaz spuštěn (m)
- Hodina dne, kdy je příkaz spuštěn (h)
- Den v měsíci, kdy je příkaz spuštěn (dom)
- Měsíc, kdy má být příkaz spuštěn (mon)
- Den v týdnu je spuštěn příkaz (dow)
- Příkaz
Pro každou položku (kromě příkazu) můžete zadat zástupný znak. Podívejte se na následující příklad crontab řádek:
30 18 * * * tar -zcf /var/backups/home.tgz / home /
Co výše uvedeným příkazem říkáte, je 30 minut, 18 hodin a každý den, měsíc a den v týdnu spustit příkaz zip a tar domovský adresář do složky / var / backups.
Chcete-li dostat příkaz ke spuštění 30 minut po každé hodině, mohu spustit následující příkaz:
30 * * * * příkaz
Chcete-li dostat příkaz ke spuštění každou minutu po 18 hod., Mohu spustit následující příkaz:
* 18 * * * příkaz
Proto musíte být opatrní při nastavování příkazů crontab.
Například:
* * * 1 * příkaz
Výše uvedený příkaz by běžel každou minutu každé hodiny každého dne každého lednového týdne. Pochybuji, že to je to, co chcete.
Chcete-li spustit příkaz v pondělí 5. ledna, měli byste na následující příkaz do souboru crontab:
0 5 1 1 * příkaz
Jak odebrat soubor Crontab
Většinu času nechcete odstranit soubor crontab, ale můžete chtít odstranit některé řádky z souboru crontab.
Pokud však chcete odstranit soubor uživatele crontab, spusťte následující příkaz:
crontab -r
Bezpečnějším způsobem je spustit následující příkaz:
crontab -i
To se ptá otázka "Jste si jisti?" před odebráním souboru crontab.