Portál AbcLinuxu, 10. května 2025 13:25

Dotaz: deploy skript volany prez ssh se neukonci pokud je vystup do terminalu

16.10.2012 15:57 Karlitos
deploy skript volany prez ssh se neukonci pokud je vystup do terminalu
Přečteno: 201×
Odpovědět | Admin
Dobry den, potreboval bych poradit se skriptem, ktery pouzivam k nasazeni a sestaveni aplikace na serveru. Z lokalniho pocitace spoustim nasledujici skript :
ssh user@server '/path/to/script/bin/start.sh'

Tento skript obsahue predevsim ansledujici volani :
java -jar -Dport=$PORT -Dpath=$CONTEXT -Djava.awt.headless=true -Xmx2G ../application.jar &

Problem je, ze se mi sice vypise vystup do konzole vypada to ale, jako kdyby se skript neukoncil - nemuzu dale nic zadavat ... Kdyz za toto volani zkusim dat treba echo test tak se mi test uz nevypise.

Kdyz ale presmeruji vystup do souboru :
java -jar -Dport=$PORT -Dpath=$CONTEXT -Djava.awt.headless=true -Xmx2G ../application.jar > /dev/null & tak se sice do konzole nic nevypise ale po rpovedeni muzu dal v konzoli praovat. Zkousel jsem u prvni varianty pouzit prikaz nohup ale bez vysledku. Mohl by me nekdo poradit kde je zakopany pes ?

Diky moc predem - K

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.10.2012 17:36 Delaunay | skóre: 17 | blog:
Rozbalit Rozbalit vše Re: deploy skript volany prez ssh se neukonci pokud je vystup do terminalu
Odpovědět | | Sbalit | Link | Blokovat | Admin
ssh -f user@server '/path/to/script/bin/start.sh'
rADOn avatar 16.10.2012 18:35 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: deploy skript volany prez ssh se neukonci pokud je vystup do terminalu
Odpovědět | | Sbalit | Link | Blokovat | Admin
To se chova naprosto spravne. Kdyz zadas ssh prikaz k provedeni tak misto interaktivniho shellu pusti jen zadany prikaz (v subshellu) a skonci. Backgrounovat to ampersanditkem nema tedy smysl, pacz pri ukonceni spojeni posle shell HUP a tu javu ti zabije. (Dokonce i kdyby si ta javova vec umela nainstalovat vlastni handler, nez nabootuje JVMko bude nejspis uz pozde.) Tedy za predpokladu ze by bezela… coz se nestane protoze ve chvili kdy precte/zapise na terminal dostane SIGTTIN/SIGTTOU a zustane viset.

Pokud se snazis aby ta java bezela jako sluzba, tak se nejspis podivej po programu start-stop-daemon kterej umi vsechno potrebne zaridit. (Podle toho headless ohaku predpokladam ze ptat se jestli se ta vec umi sama daemonizovat je zbytecny.) Backgroundovani ampersanditkem je urceny k tomu abys na jednom telexovym terminalu mohl zonglovat s vice bezicimi programy najednou, ne k provozu serverovych sluzeb. Pokud tedy nemas z muzea zapujceny DECwriter, udelas nejlip kdyz na backgroundovani uplne zapomenes.

Krome toho jeste muzes narazit na to ze neinteraktivni shell neni loginshell takze se ti neprovede .profile takze vyfasujes znacne chude prostredi z initu (sshd nastavi uplne zakladni veci jako $USER a mozna $TERM ale to bude asitak vsechno). Treba CLASSPATH pokud ho mas v profile.d tedy nenajdes. Klidne to muze viset na SIGTTOU protoze se snazi vypsat nejakou chybovou hlasku…

Mohl by me nekdo poradit kde je zakopany pes ?
Ten nejvetsi pes je spis slon a je zakopany v tom ze jako spravny javista objevujes kolo. Na deployment se pouziva balickovaci system. Mensi pes je ze si pletes daemonizaci a job control.
"2^24 comments ought to be enough for anyone" -- CmdrTaco

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.