www.mikajik.info

[ ↓ navigace ↓ ]

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