Je nějaký rozdíl mezi skriptem a řádkou?

Vrták

Je nějaký rozdíl mezi skriptem a řádkou?
« kdy: 24. 03. 2013, 11:03:04 »
Nemůžu nic nají, ale možná jsem jen kousek vedle a nevidím. Mám starou binárku 32 bit, která mě z řádku jede, ale ze skriptu se nespustí. Nejsem guru, takže jsem ve skriptu vyzkoušel akorát /usr/local/bin/binarka && echo prikaz prosel a ejhle, on skutečně projde, ale ps -ax jej neukáže a skutečně ani neběží.
Je nějaký rozdíl ve spuštění z řádku a ze skriptu?
Díky za nakopnutí


Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #1 kdy: 24. 03. 2013, 11:20:56 »
/usr/local/bin/binarka && echo prikaz prosel a ejhle, on skutečně projde, ale ps -ax jej neukáže a skutečně ani neběží.
Konstrukce "a && b" znamená "spusť b v případě, že a skončil bez chyby". Tudíž příkaz skončil a v ps ho vidět nemůžeš.

Vrták

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #2 kdy: 24. 03. 2013, 11:26:51 »
Tak to jsem byl asi vedle tady, ale to nevysvětluje, proč příkaz skončil, když má běžet dál, a pokud naklepu /usr/local/bin/binarka a odentruju, tak i běží.

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #3 kdy: 24. 03. 2013, 11:28:24 »
Asi těžko ti někdo poradí, proč ti neběží příkaz, když nenapíšeš jaký.

monitor

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #4 kdy: 24. 03. 2013, 12:38:06 »
su programy, ktore, aj ked nevyuzivaju  vacsinou nevyuzivaju terminal, tak si predsa len skontroluju, ci stdout je terminal, alebo nieco v tom zmysle...

v kazdom pripade, moj navrh je: skus presmerovat vystup (stdout) aj chybovy vystup a budes mudrejsi...

/usr/local/bin/prikaz > log.txt 2>&1 &&

a pozri sa potom do toho suboru

pripadne si pozrit man stranku

mozno ma nejaky prepinac typu: "daemonize", ci "run in background"
 


monitor

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #5 kdy: 24. 03. 2013, 12:40:14 »
a ked ani to nepomoze, tak si spusti:

strace /usr/local/bin/prikaz > log.txt 2>&1

a uvidis, ake robi syscall-y, a aky zlyha - niekde blizko konca...

(porovnaj si tie log subory, ked to spustis z konzoly, a zo skriptu, a budes mudrejsi :-)

Vrták

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #6 kdy: 24. 03. 2013, 13:26:35 »
v obou případech je log.txt prázdný

Tohle mě dává jako přepínače

usage: redemptic [-d] [-C <configfile>]
        -d               run in the foreground (implies -v and -q)
        -v               be verbose
        -q               don't use syslog (use on old systems)
        -C <configfile>  use <configfile> instead of default (/var/etc/redemptic.cfg)
        -f               filter on specific demux data (saves some CPU,
                         but some platforms might not handle this very well)
        -n               show network packets
        -s               disable server
        -t               show timing
        -l               disable self-learning capabilities

Vrták

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #7 kdy: 24. 03. 2013, 13:33:27 »
Mě to přijde, jako by nenašel config, když je spuštěn ze skriptu, protože se chová přesně tak, jako když jej spustím bez parametru -C

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #8 kdy: 24. 03. 2013, 16:21:29 »
Mě to přijde, jako by nenašel config, když je spuštěn ze skriptu, protože se chová přesně tak, jako když jej spustím bez parametru -C

A zkoušel jsi to teda pustit přes ten strace?
Kdyby to něco nemohlo najít, viděl bys to tam ...

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #9 kdy: 24. 03. 2013, 16:23:44 »
A co vyzkoušet tu -d volbu?

Vrták

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #10 kdy: 24. 03. 2013, 18:33:26 »
Tak jsem to vyzkoušel a oči mě bolej z toho porovnávání logů. Bohužel, se strace mi binarka nenaběhla jak ze skriptu, tak z řádku. A ty logy se krom pidů a ještě pár nepodstatných čísel nelišili v ničem. Nechápu, co tomu může být, v předošlé instalaci debianu to šlo normálně, ale po reinstalaci to takhle zblblo. Debian jsem instaloval ze stejného zdroje, tady chyba nebude. Navíc na podobném stroji - záložném - to běží v pohodě. Já ten prográmek spouštím z rc.local, nemůže být někde chyba v prioritách procesů? - tomu ještě moc nerozumím.

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #11 kdy: 24. 03. 2013, 20:48:06 »
Já ten prográmek spouštím z rc.local, nemůže být někde chyba v prioritách procesů? - tomu ještě moc nerozumím.
Jo takhle! No ale to je nová informace, kterou jsi nám nedal.  Startovací skripty se spouští v jiném prostředí než jaké máš, když jsi přihlášený. Nejčastější problém je, že startovací skript má jinak nastavenou proměnnou PATH. Zkus do toho skriptu dát název i s celou cestou: "/usr/local/bin/redemptic ..."

Pokud to nepomůže, bude muset poradit někdo, kdo zná konkrétně Debian, co by tam ještě mohlo hrát roli.

pet

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #12 kdy: 25. 03. 2013, 09:33:20 »
Při startu terminálu se provede source /etc/profile, tím se přenastaví prostředí. Při startu z cronu, rc scriptu a podobně nastavené není. Často pomůže dát scriptu ono source /etc/profile.

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #13 kdy: 25. 03. 2013, 09:51:53 »
Já ten prográmek spouštím z rc.local, nemůže být někde chyba v prioritách procesů? - tomu ještě moc nerozumím.
Jo takhle! No ale to je nová informace, kterou jsi nám nedal.  Startovací skripty se spouští v jiném prostředí než jaké máš, když jsi přihlášený. Nejčastější problém je, že startovací skript má jinak nastavenou proměnnou PATH. Zkus do toho skriptu dát název i s celou cestou: "/usr/local/bin/redemptic ..."
+1, nejčastější problém v rc je s PATH ;]

Vrták

Re:Je nějaký rozdíl mezi skriptem a řádkou?
« Odpověď #14 kdy: 25. 03. 2013, 10:13:12 »
v rc.local mám zápis ve tvaru:
/usr/local/bin/redemptic -C /usr/local/etc/redemptic.cfg
parametr -C určuje path ke konfiguračnímu souboru
dále spouštím i jiné procesy, které jsou na sebe vázány, pořadí je žádoucí, ale není nutné, koneckonců můžu redemptic spuštět i ručně, ale z hlediska problému jako takového mi to hlava nebere.