Cron - časování skriptů
Dneska jsem se asi 2 hodiny pral s časováním skriptů v Linuxu. Plán byl aby se mi přesně v zadaný čas spouštěli PHP skripty. Hledal jsem na internetu, ale na českých webech jsem toho moc nenašel. Proto bych se s Vámi chtěl podělit o mé řešení.
Crontab obsluhuje linuxový démon crond. To jestli tento démon běží zjistíte příkazem:
ps aux | grep cron
Pokud Vám tento příkaz vypíše podobný řádek, znamená to, že démon běží.
6134 ? Ss 0:00 /usr/sbin/cron
Nyní zbývá otevřít crontab pro editaci příkazem:
crontab -e
Crontab se Vám otevře v textovém editoru a můžete ho editovat.
Struktura crontabu je následující:
# 1 - minuty (0-59) # 2 - hodiny (0-23) # 3 - dny v měsíci (1-31) # 4 - měsíc (1-12) # 5 - den v týdnu (0-7; 0 a 7 = neděle) * * * * * skript * znamená (první-poslední), tzn. platí vždy Více informací o nastavení crontabu lze najít na internetu.
Teďka k mému problému. Měl jsem dva skripty a potřeboval jsem aby běželi z konkrétního adresáře a v tomto adresáři generovali nějaký obsah. Skripty jsem potřeboval spouštět v několika hodinových intervalech.
02 */4 * * * /usr/bin/php -q /var/www/localhost/virtuals/test/html/xml/xml_seznam_cron.php 00 0,4,8,12,16,20 * * * /usr/bin/php -q /var/www/localhost/virtuals/test/html/xml/xml_centrum_cron.php
Celý problém byl v tom, že se musí PHP skript posílat do PHP aby se zkompiloval. Takže je nutné znát přesně cestu k PHP a přesně cestu ke skriptu. Tyto příkazy fungují pro Debian 4.0.
Po správném nastavení cest k PHP a ke skriptům je nutné crontab uložit. Prohlédnout se dá příkazem
crontab -l
Poslední nutným příkazem je /etc/init.d/cron restart