Cron je démon který spouští naplánované úkoly založené na vstupu z příkazu
Portage vám nabízí k vybrání z minimálně tří provedení cronu. Každy z nich vám
nabízí podobné rozhraní zejména použití
Za povšimnutí také stojí, že všechny tři nabízené balíčky závisí na
Než začneme pracovat s cronem, musíte si zvolit, který cron chcete používat. Pro vaše pohodlí jsme shromáždili informace o každém z nich níže.
Vixie cron je plně vybavené provedení založené na SysV cronu. Každý uživatel má jeho vlastní crontab a má povoleno nastavovat proměnné prostředí uvnitř crontabu. Narozdíl od ostatních dvou cronů také nabízí podporu pro SELinux a PAM. Podporuje méně architektur než Dcron, ale více než Fcron.
Vlastnosti
Dcron má za cíl být jednoduché, elegantní a bezpečné provedení cronu.
Neposkytuje nastavování proměnných prostředí v crontabech a cron-úkoly jsou
spouštěny z
Vlastnosti
Fcron si pokládá za cíl nahradit Vixie cron a Anacron. je navržen pro práci na
nekontinuálně běžících systémech a obsahuje příslušné extra vlastnosti.
Obsahuje úkolové omezovače, ovládání seřazení úkolů, schopnost přidělovat
procesům hezké hodnoty a schopnost naplánování procesů ke spuštění po spuštění
systému. Shlédněte
Vlastnosti
Anacron není cron démon, je to něco co obvykle pracuje dohromady s jedním z cronů. Spouští příkazy v intervalech specifikovaných ve dnech a nepředpokládá, že systém běží nepřetržitě; spustí procesy které byly zmeškány když systém byl dole v dole. Anacron se obvykle spoléhá, že ho cron démon spustí každý den.
Vyberte cron který se Vám nejvíce líbí a poté ho emergněte.
# emerge dcron # /etc/init.d/dcron start # rc-update add dcron default
Volitelně, pokud jste nenainstaloval Fcron, mohl byste chtít nainstalovat Anacron.
# emerge anacron # /etc/init.d/anacron start # rc-update add anacron default
Post-instalační zprávy některých z těchto cronů Vám říkají, že je třeba spustit
Všimněte si, že úkoly naplánované v systémovém crontabu se nemusi objevit ve
výpisu úkolů zobrazených pomoci
Samozřejmě si můžete zvolit nepoužívat systémový crontab. Pokud si vyberete
Dcron nebo Fcron,
# sed -i -e "s/^/#/" /etc/crontab
Pokud chcete aby i jiní uživatelé něž kořen měli přístup ke cron démonu,
přečtěte si tuto část, pokud ne, můžete pokračovat až další částí.
Bez ohledu na to který cron používáte, uživatélé kterým chcete povolit používat
crontab musí být v ve skupině cron. Například pokud chcete přidat uživatele
# gpasswd -a "Aleš Máslo" cron
Pokud používáte Dcron, je toto vše, co musíte udělat pro to, aby
uživatel měl přístup ke crontab. Uživatelé Dcronu nyní mohou pokročit k další
části.
Pokud používáte Fcron, budete chtít upravit
all
Teď máme uživatele
wepy
Pokud jste si zvolili Vixie cron, pravděpodobně budete chtít upravit jen
Například, pokud chcete povolit uživatele
wepy
Postup upravování crontabu pro různé balíčky cronů se různě liší, avšak každý z nich poskytuje stejnou základní sadu příkazů: přidávání, mazání, upravování, nahrazování crontabů a procházení cron-úkolů v crontabech. Následující seznam vám ukáže jak spouštět tyto příkazy pro každý z cronů.
Verze | Upravit crontab | Odstranit crontab | Nový crontab | Procházet cron-úkoly |
---|---|---|---|---|
Než můžeme používat tyto příkazy, je nutno nejprve porozumět crontabu samotnému.
Každá řádka v crontabu musí obsahovat pět časových informací v následujícím
pořadí: minuty (0-59), hodiny (0-23), dny v měsíci (1-31), měsíce (1-12), a dny
v týdnu(0-7, Pondělí je 1, Neděle je 0 a 7). Měsíce a dny v týdnu mohou
být určeny třípísmenými zkratkami - mon, tue, jan, feb, atd. Každé pole je
schopno určit rozsah hodnot (napr. 1-5 nebo mon-fri), čárkou oddělený seznam
hodnot (napr. 1,2,3 nebo mon,tue,wed) nebo rozsah hodnot s
Zní to trochu zmateně, ale po pár příkladech uvidíte, že to není tak složité.
# Spustí /bin/false každou minutu celý rok * * * * * /bin/false# Spustí /bin/false v 1:35 v mon,tue,wed (pon,ute,str) a 4. každý měsíc 35 1 4 * mon-wed /bin/false# Spustí /bin/true v 22:25 2. Března 25 22 2 3 * /bin/true# Spustí /bin/false ve 2:00 každé Pondělí, Středu a Pátek 0 2 * * 1-5/2 /bin/false
Pro vyzkoušení toho, co jsme se zrovna naučili, vložme nějaké cron-úkoly.
Nejprve vytvořte soubor
$ nano crons.cron#Minuty Hodiny Dny Měsíce Dny v týdnu 10 3 1 1 * /bin/echo "Nemám rád cron" 30 16 * 1,2 * /bin/echo "Trochu mám rád cron" * * * 1-12/2 * /bin/echo "Mám rád cron"
Teď můžeme přidat tento crontab do systémového crontabu pomocí "příkazu nový" z tabulky výše.
# crontab crons.cron
Pro kontrolu cron-úkolů, které jste naplánovali, použijeme příslušný
# crontab -l
Měli byste vidět seznam podobající se
Tento crontab by měl vypsat "Mám rád cron" každou minutu, každou hodiny, každy den, každý měsíc. Očividně toto uděláte pouze když opravdu máte rádi cron. Crontab dále vypíše "Trochu mám rád cron" v 16:30 každý den v Lednu a Únoru. A ještě vypíše "Nemám rád cron" vždy v 3:10 1. Ledna.
Pokud používáte Anacron, měli byste dale číst tuto část. Pokud ne, pokračujte
následující částí na
Uživatelé Anacronu, budou chtít upravit
Například pro spuštění
5 10 wasting-time /bin/echo "Mám rád anacron"
Anacrn se ukončí po provedení všech úkolů v anacrontabu. Takže pokud chceme spouštět tyto úkoly každý den, budeme muset použít cron. Instrukce na konci další části Vám řeknou jak na to.
Buďme realističtí. Určitě nechcete aby vám systém každou minutu říkal jak moc
máte rádí cron. Jako krok kupředu, odstraňme tento crontab pomocí příslušného
# crontab -d # crontab -l
Neměli byste teď vidět žádné cron-úkoly ve výstupu
Teď, když máme čistý štít, vložme něco užitečného do kořenového crontabu.
Většina lidi chce spouštět
22 2 * * 1 /usr/bin/updatedb
Toto by mělo říct cronu, aby spustil updatedb pokaždé ve 2:22 v Pondělí ráno
každý týden. Teď byste měli přidat crontab příslušným
# crontab crons.cron # crontab -l
Řekněme, že teď chcete přidat ještě
# crontab -e
Toto by Vám mělo otevřít uživatelský crontab v editoru. Chceme spouštět
22 2 * * 1 /usr/bin/updatedb 30 6 * * * /usr/bin/emerge --sync(pokud používáte anacron, přidejte tento řádek) 30 7 * * * /usr/sbin/anacron -s
Znovu zkontrolujte seznam cron-úkolů jako jsme dělali v předchozích příkladech. Pokud tam všechny jsou, je vše dobře.
Jak jsme zmínili dříve, všechny tři dostupné balíčky cronů jsou závislé na
*/15 * * * * test -x /usr/sbin/run-crons && /usr/sbin/run-crons 0 * * * * rm -f /var/spool/cron/lastrun/cron.hourly 0 3 * * * rm -f /var/spool/cron/lastrun/cron.daily 15 4 * * 6 rm -f /var/spool/cron/lastrun/cron.weekly 30 5 1 * * rm -f /var/spool/cron/lastrun/cron.monthly
Abysme nezacházeli do moc detailů, můžeme přijmout jen to, že tyto příkazy spustí Vaše hourly, daily, weekly a monthly skripty. Tato metoda plánování cron-úkolů má pár důležitých výhod:
Pokud máte problemy s nastavením cronu aby pracoval jak Vy chcete, můžete si projít tento rychlý seznam.
Pamatujte, každý cron balíček je odlišný v jeho rozsahu vlastností. Přečtěte si manuálové stránky Vašeho konkrétního cron balíčku.
Hodně Štěstí!