Portál AbcLinuxu, 11. května 2025 04:37
Zdravím, vytvářel jsem jeden skript který mě testoval nějaký soubor, jestli našel v souboru script danou hodnotu udělal jednu větev if, kde spouštěl jeden jeden cgi skript za pomoci wget.. kterej vypíše nějaké info v html co změnil.. pokud ne udělal druhou větev..
Měl jsem zde výpis echo "vše proběhlo v pořádku"
nebo zase že neproběhlo v pořádku..
když jsem skript spustil pod rootem, vše v pořádku fungovalo jak má..
jakmile jsem ho ale zadal do cronu abyse spouštěl každou minutu, script nefungoval..
V logu /var/log/messages mě každou minutu firewall zapsal log
Mar 10 12:44:02 NazevStroje kernel: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=56 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=39376 DPT=512 LEN=36
trápil jsem se proč a pak přišel že to dělá echo .. tedy výpis na obrazovku.. tedy jsem všechny echo předělal s výstupem do souboru za pomoci >
program stále ale nefungoval tak jak má a proto jsem i tuhle část kde se spouští cgi skript musel vyřešit takhle :
if wget -O - -q http://www.blabla.cz/update.cgi > /var/log/logScriptu
if tam je protože testuju jestli to proběhlo v pořádku.. Dofám že se to tak dělá a pokud dojde k chybe vykoná se else? :)
Otázka tedy zní, jak se tohle řeší?
Jestli když cron spouští skript třeba pod rootem, nesmí nic obdržet vypsaného nic na obrazovku?
Sám sem si odvodil že když to spouští cron že nemá přiděleno tty tak proto to nejde? Ale nevím jestli to tak je..
Nebo jestli mám chybu na firewallu? Ikdyž zde mám povolené vše z lokálu na lokal a kamkoliv atd...
Díky za objasnění..
if wget -O - -q http://www.blabla.cz/update.cgi > /var/log/logScriptuje docela rozumné, dělá se to tak většinou, jinak vám cron opravdu výstup posílá např. mailem, záleží na nastavení. Při spouštění z cronu je asi problém v nastavení prostředí, dejte si ho v cronu vypsat příkazem:
envMáte u toho programu který dělá tu potřebnou činnost plnou cestu? Pokud ho máte někde v PATH a PATH při spuštění procesu cronem je jiná než má root, tak by to mohl být ten problém. Je tu o cronu i nějaké FAQ... Další věc je že se vám to v cronu nejspíš pouští pomocí sh, nikoliv bash, to by mohl být další zádrhel.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.