Fórum Root.cz
Hlavní témata => Software => Téma založeno: norwi 21. 01. 2013, 07:08:21
-
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
-
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
-
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
-
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