warum hängt script?



  • hallo christoph,

    deine Hilfe ist super! danke auf jeden fall schon mal. ein paar probleme hab ich aber noch. ich habe mit nohup und screen rumgespielt und bei beiden wohl noch einen gedankenfehler. das programm, welches ich auf dem anderen rechner starten möchte ist eine testanwendung, welche startet, sockets bindet und dann verkehr generiert bzw. einsammelt. informationen darüber gibt es auf dem monitor aus und schreibt sie in ein log. die log datei reicht mir eigentlich, daher würde nohup reichen. screen wäre eleganter, da ich irgendwann das prog ja auch wieder beenden will ;).

    wenn ich allerdings:

    ssh -l user HOST_NAME "nohup java /pfad_zum_test_prog/testprog"
    

    aufrufe, blockiert ssh ja dennoch auf dem programm. eigentlich will ich sowas wie &, also starten und vergessen (bzw. später nochmal vorbei schauen). aber so tut dies nicht. ich weiß, dass ich einen simplen anfängerfehler mache, sehe ihn aber leider nicht. hast du einen tip? das wäre cool.

    sven_



  • ach man, wie doof!

    ssh -l user HOST_NAME "nohup 'java /pfad_zum_test_prog/testprog' &"
    

    ist die lösung. komisch nur, dass ich ohne & am ende einen fehler bekomme im sinne datei nicht vorhanden? mh. 😕



  • und eins noch, wenn ich das ganz über pssh aufrufe, bekomme ich zwar ein success, aber top auf dem zielrechner zeigt keinen laufenden java prozess. mh 😞 gibts da nen trick zum debuggen? wie man sieht, woran es happert?



  • sven_ schrieb:

    und eins noch, wenn ich das ganz über pssh aufrufe, bekomme ich zwar ein success, aber top auf dem zielrechner zeigt keinen laufenden java prozess. mh 😞 gibts da nen trick zum debuggen? wie man sieht, woran es happert?

    top zeigt nur so viele Prozesse an, wie "auf den Bildschirm passen". Mit ps -a kannst du alle anzeigen lassen - vielleicht liegt es einfach nur daran?



  • Hallo zusammen,

    also ein wenig zweifle ich an mir selbst:

    So:

    ssh -l jgroups JGroups_1 -A -P "nohup java -jar jgroups/Text/dist/Test.jar"
    

    wird die Test-Anwenduung gestartet, ssh kommt aber nicht aus dem Skript zurück. Als ob also nohup nicht funktionieren würde.

    Das selbe Ergebnis ergibt:

    ssh -l jgroups JGroups_1 -A -P "nohup java -jar jgroups/Text/dist/Test.jar &"
    

    Irgdwas mach ich definitiv falsch. Aber was? Ich sehe es leider nicht. Ich habe es mit top und ps überprüft. Endweder rennt das Programm, blockiert aber ssh, oder wird nicht ausgeführt. ??? 😕


  • Mod

    http://en.wikipedia.org/wiki/Nohup#Overcoming_hanging

    P.S.: Die Ausgabedatei darf natürlich auch /dev/null sein.



  • mein held!

    ich hatte es gelesen, aber dachte, da mein prog eh schon nen log schreibt, ist dies nicht nötig! in kombination mit einem & am ende tut es dann auch.

    man, schwere geburt! vielen dank. dann probiere ich dass mal in mein skript einzubauen.

    gruß

    sven_



  • ok, ich brauch doch nochmal hilfe:

    wenn ich pssh so starte, klappt es:

    COMMAND='nohup java -jar jgroups/Test/dist/Test.jar > nohup.log 2>&1 < /dev/null &'
    

    aber so nicht:

    COMMAND='nohup "$@" > nohup.log 2>&1 < /dev/null &'
    

    Im log steht nohup missing operand. Ich vermute, dass ich beim Bash-Array was nicht verstanden habe und deswegen wohl das Kommando falsch übergebe, oder? Noch nen Tip? Wäre sehr cool.



  • aso,

    das command setz ich dann ins pssh_command ein, per ${COMMAND[@]} und das pss_command führe ich wie besprochen aus. offensichtlich löst er das array nicht auf, aber wie ist es richtig?



  • ach blind ist der mensch! ich habs. so ist richtig:

    COMMAND="nohup "$@" > nohup.log 2>&1 < /dev/null &"
    

    was so ein hochkommata so aus machen kann. 😉 vielen dank für eure hilfe!


Anmelden zum Antworten