Zdravím
Mám prosbu už fakt nevim.
mám skript, který KILLne dva procesy a pak spouští "rmiregistr" (java) a JAVovský skript.
Pokud skript pustim rucne, vse pod userem vse probehne OK.
Pokud ho pustim pod CRONe tak, skript v danem case jen KILLne procesy a nic nespusti.
Kdyz skript pustim pod rootem CRONa tak vse nabehne.
Prava jsme pridelil a porad nic.
Vypis logu neříka zadnou chybu.
OS je CENTOS
Muj skript
#kill process rmregistry
ps -ef | grep rmiregistry |grep user1 | grep -v grep | awk '{print $2}' | xargs kill -9
#kill proces java
ps -ef | grep /usr/java/jdk1 |grep user1 | grep -v grep | awk '{print $2}' | xargs kill -9
sleep 10
cd /srv/vipilot/pluto
./skript1.sh
./skript1
Díky za jakýkoli HINT.
prava na skript? moze ich pustat user ktory to ma v crone?
cd /srv/vipilot/pluto
./skript1.sh
./skript1
A co tam misto této konstrukce raději zadat absolutní cestu?
/.../.../skript1.sh
Zkusil bych to zjednodušit. Pustil bych ručně třeba sleep 10000, místo těch ps bych zkusil dát killall sleep a následně to cd a spuštění scriptu... a do toho scriptu bych dal třeba jenom echo test > /tmp/test, pustil pomocí CRONu a zkusil bych se podívat jestli se vytvořil /tmp/test...
Přijde mi, že to co tu uvádíš by mělo fungovat, jestli jsou práva OK a chmod +x
Citace od: mon kdy 21. 01. 2013, 08:01:25
prava na skript? moze ich pustat user ktory to ma v crone?
pokud skript spustim manualne pod danym uzivatelem (su user) tak probehne
navic jsem procesum prideli prava pres chown user:group ./skript1.sh
Citace od: Mareg kdy 21. 01. 2013, 09:41:45
cd /srv/vipilot/pluto
./skript1.sh
./skript1
A co tam misto této konstrukce raději zadat absolutní cestu?
/.../.../skript1.sh
Absolutní cesta není možná, protože skript1.sh ma v sobe
cd directory a pak cd ..
Krasny den,
z cronem byva problem ze nema nastavene promene prostredi, povetsinou se nedostane k PATH.
Podle kodu bych si tipnul ze ./skript1.sh nebo ./skript1 ma uvnitr nejaky kod kteremu chybí nějaká
proměná prostředí, kterou muze mít root nastavenu.
V kazdém případě bych si vypisem nějaké hodnoty ověřil zda zda se ./skript1.sh a ./skript1 spustí. Já si myslím že jo a že havaruje až kod uvnitř.
a pomoci /usr/bin/env bych si vypsal promene prostredi u user na primo, user cron a root cron a pak je porovnal a rozdil musim vidět.
Honza Vrána
Jeste overte, zda dany uzivatel vubec smi spoustet neco cronem. Zkuste spustit cronem nejaky uplne jednoduchy prikaz treba /bin/echo "test" > /tmp/test.txt . Kdyz nepujde, podivejte se do log souboru cron, messages a secure v adresari /var/log/ zda tam nebude nejaka zprava. Bezpecnostni omezeni nebo zakazy spousteni uloh cronem mohou byt v souborech /etc/cron.allow, /etc/cron.deny, /etc/security/access.conf, /etc/pam.d/crond a v nastaveni selinuxu.
jenze kill funguje, takze user musi myt prava aby neco spustil
Citace od: norwi kdy 22. 01. 2013, 20:52:44
jenze kill funguje, takze user musi myt prava aby neco spustil
V tom je mozna problem. Bezet by to melo i bez myti prav. Co kdybyste za to cd zkusil pridat pwd >>/tmp/skript.log ? Abyste vedel, kde po tom cd vlastne jste a zdali je to tam, kde ocekavate. Mohl byste to pridat i na zacatek skript1.sh a skript1, abyste videl, jestli to drzi. A neskodilo by si tam vzdy nechat echnout nejakou znacku, aby bylo videt, kdo co psal.
urctite pridam
zatim vidim, ze se nekoretne uzvavre komunikce na portech
netsat ukakuzuje ze komunikce porad probíha, druhy server porad vysila dotazy
nevite jak se korektne ukoncuje komunikace
Hm, to je blbe. Ale asi to ma neco do cineni s tim, ze pouzivate kill -9. Zkuste kill -15, pak si overte, ze to skoncilo, treba v nejakem cyklu o treba peti krocich s dvouvterinovym nebo nejak inteligentne navolenym sleepem a kdyz to nevyjde, pustte na to kill -9 a pak budete muset pockat, az ty porty vyhniji, abyste mohl aplikaci znovu spustit.
O problemu s visicimi porty se tu nedavno mluvilo tady: http://forum.root.cz/index.php?topic=5510.0