nohup funktionniert nicht richtig - warum??

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von fuexli, 06.01.2006.

  1. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    hi zusammen!

    ich hab hier ein skript, welches mir diverse hintergrund-prozesse starten soll. zuerst zwei php-prozesse, und dann noch einige java-prozesse.
    hier ein auszug aus meinem code:

    Code:
    ### 
    # start wsconsumer-Service anyway (check if running, if no, start it)
    #
    	pida=`ps -ef | grep php | grep wsconsumer | awk '{print $1}'`
    	if [ "$pida" != "" ]; then
    		echo "Service wsconsumer.php is already running (PID: $pida)"
    	else
    		echo "wsconsumer-Service is not running, i'm starting it..."
    		cd /usr/local/projects/wsgsim/prod/simoms/appl/html/soap/app
    		nohup php wsconsumer.php > /usr/local/projects/wsgsim/log/simoms/logs/wsconsumer.log &
    		sleep 60
    	fi
    ###	
    # start socketDaemon-Service anyway (check if running, if no, start it)
    #
    	pidb=`ps -ef | grep php | grep socketDaemon | awk '{print $1}'`
    	if [ "$pidb" != "" ]; then
    		echo "Service socketDaemon.php is already running (PID: $pidb)"
    	else
    		echo "socketDaemon-Service is not running, i'm starting it..."
    		cd /usr/local/projects/wsgsim/prod/simoms/appl/dispatcher/app
    		nohup php socketDaemon.php > /usr/local/projects/wsgsim/log/simoms/logs/socketDaemon.log &
    		sleep 60
    	fi
    ###
    # process the normal queues
    #
    	if [ "$Q02" = "on" ]; then
    		pid=`ps -ef | grep java | grep q02 | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue Q02 is already running (PID: $pid)"
    		else
    			echo "Starting Queue Q02..."
    			nohup java AsyncOut q02 > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    
    die beiden ersten prozesse sind wie man sieht php, dann folgt ein java-prozess (die weiteren hab ich aus grund der übersichtlichkeit weggelassen).

    nun mein problem: das skript läuft fehlerfrei druch, aber irgendwie sind nach dem ablauf nur die beiden php-prozesse sichtbar - von den javaprozessen keine spur. und laufen tun die auch nicht (ich kann sie nicht ansprechen, und mit ps -ef find ich sie auch nicht).
    was mache ich hier falsch??

    vielen dank für eure hilfe!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    und die variable Q02 ist auf "on" ?
     
  4. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    jawoll, die ist auf on. da kann ich meine hand ins feuer legen:-)
     
  5. #4 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    und was gibt das script auf der console aus? da stehen ja ein paar echo's drin, z.b. echo "Queue Q02 is already running (PID: $pid)"
     
  6. #5 fuexli, 06.01.2006
    Zuletzt bearbeitet: 06.01.2006
    fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    eigentlich alles genau was es soll.
    wenn ich das skript mit einer zweiten konsole verfolge, und in diesem die prozesse laufend abfrage, dann macht er alles schön. er startet beide php-prozesse, dann beginnt er mit den java-prozessen, doch diese bleiben dann nicht permanent.

    wenn ich die php-prozesse nicht starte, bleiben auch die java-prozesse permanent. und noch was: wenn ich das skript ein zweites mal starte, dann müssen ja die php-prozesse nicht mehr gestartet werden, und die java-prozesse bleiben auch permanent...
    komisch...

    vielleicht hilft das ganze skript?? ist aber ein moster:

    Code:
    #! /bin/sh
    #
    # $Id: wsgt-menu.sh, v 2.0 2005/12/23 17:11:11 itpdupa1 Exp $
    #
    # non-interactive start of WSGT
    # reads wsgt.conf and starts or stops all processes accordingly
    #
    # check for deployment:
    # - variable instance
    # - variable wsgtdir
    #
    ########################################################################
    
    
    start_configured () {
    ### 
    # start wsconsumer-Service anyway (check if running, if no, start it)
    #
    	pida=`ps -ef | grep php | grep wsconsumer | awk '{print $1}'`
    	if [ "$pida" != "" ]; then
    		echo "Service wsconsumer.php is already running (PID: $pida)"
    	else
    		echo "wsconsumer-Service is not running, i'm starting it..."
    		cd /usr/local/projects/wsgsim/prod/simoms/appl/html/soap/app
    		nohup php wsconsumer.php > /usr/local/projects/wsgsim/log/simoms/logs/wsconsumer.log &
    	fi
    ###	
    # start socketDaemon-Service anyway (check if running, if no, start it)
    #
    	pidb=`ps -ef | grep php | grep socketDaemon | awk '{print $1}'`
    	if [ "$pidb" != "" ]; then
    		echo "Service socketDaemon.php is already running (PID: $pidb)"
    	else
    		echo "socketDaemon-Service is not running, i'm starting it..."
    		cd /usr/local/projects/wsgsim/prod/simoms/appl/dispatcher/app
    		nohup php socketDaemon.php > /usr/local/projects/wsgsim/log/simoms/logs/socketDaemon.log &
    	fi
    ###
    # process the normal queues
    #
    	if [ "$Q02" = "on" ]; then
    		pid=`ps -ef | grep java | grep q02 | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue Q02 is already running (PID: $pid)"
    		else
    			echo "Starting Queue Q02..."
    			nohup java AsyncOut q02 > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$Q10" = "on" ]; then
    		pid=`ps -ef | grep java | grep q10 | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue Q10 is already running (PID: $pid)"
    		else
    			echo "Starting Queue Q10..."
    			nohup java SyncIn q10 > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$Q28" = "on" ]; then
    		pid=`ps -ef | grep java | grep q28 | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue Q28 is already running (PID: $pid)"
    		else
    			echo "Starting Queue Q28..."
    			nohup java AsyncIn q28 > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$QMPM" = "on" ]; then
    		pid=`ps -ef | grep java | grep qmpm | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue QMPM is already started (PID: $pid)"
    		else
    			echo "Starting Queue QMPM..."
    			nohup java AsyncOut qmpm > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$QNIB" = "on" ]; then
    		pid=`ps -ef | grep java | grep qnib | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue QNIB is already started (PID: $pid)"
    		else
    			echo "Starting Queue QNIB..."
    			nohup java SyncIn qnib > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$QXMB" = "on" ]; then
    		pid=`ps -ef | grep java | grep qxmb | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue QXMB is already started (PID: $pid)"
    		else
    			echo "Starting Queue QXMB..."
    			nohup java AsyncIn qxmb > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    	if [ "$SPT" = "on" ]; then
    		pid=`ps -ef | grep java | grep spt | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue SPT is already started (PID: $pid)"
    		else
    			echo "Starting Queue SPT..."
    			nohup java SyncOut spt > /usr/local/projects/wsgsim/log/simoms/logs/queues.log &
    		fi
    	fi
    }
    
    stop_all (){
    	ps=bin/ps
    	awk=bin/awk
    	for queue in q02 q28 q10 qnib qmpm qxmb spt
    	do
    		pid=`ps -ef | grep java | grep $queue | awk '{print $1}'`
    		if [ "$pid" != "" ]; then
    			echo "Queue $queue with PID $pid is being shutdown..."
    			kill $pid
    		fi
    	done
    }
    
    #################
    # start of script
    #################
    
    #+++++++++++++++++++++++++++++++++++
    #++ CHECK $instance and $wsgtdir +++
    #+++++++++++++++++++++++++++++++++++
    instance=simoms
    #instance=sime2e
    # set start directory with absolute path first:
    wsgtdir=/usr/local/projects/wsgsim/prod/$instance/appl/if/mq/if-mq/bin/
    
    
    # read current status
    . $wsgtdir/conf/wsgt.conf
    
    # set Java CLASSPATH
    . $wsgtdir/conf/set_classpath_jdk_1_4.profile
    
    case "$1" in
        start)
    		echo "Starting MQ/DINO adaptors of instance $instance"
    		start_configured
    		;;
        stop)
    		echo "Shutting down all MQ/DINO adaptors of instance $instance:"
    		stop_all
    		;;
        *)
           echo "Usage: $0 {start|stop}"
           exit 1
           ;;
    esac
    
    exit
    
     
  7. #6 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    steht im log file (/usr/local/projects/wsgsim/log/simoms/logs/queues.log) irgendwas drin?
     
  8. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    nein, das hat er nicht angelegt - dieses sehe ich nicht, obwohl der pfad schon korrekt ist.
    ich muss auch noch sagen, dass ich die java-progis einzeln getestet habe, diese laufen ohne fehler.
     
  9. #8 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    und wenn du die ganzen nohup's weglässt, gehts dann?
     
  10. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    nee... das bringt auch nichts...
     
  11. #10 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    was mir ich mir noch vorstellen könnte: die programme werden ja alle im hintergrund und damit fast gleichzeitig gestartet. vielleicht verkraftet das system oder die programme das nicht. bau mal nach jedem programm start eine verzögerung (sleep 5 oder so) ein und test's dann
     
  12. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    das hab ich mir auch schon gedacht...
    die java-prozesse ohne die php's machen keine probleme (getestet), erst wenn die php-prozesse dazukommen gehts nimmer.

    ich hab nach jedem php-prozess schon gewartet - bis 60 sekunden, doch es hat nix gebracht. leider.
     
  13. #12 ninguno, 06.01.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    du hast gesagt du hast alle programme schon einzeln getestet. heisst das du startest ein programm, es funktioniert, du beendest das programm, du startest das 2. programm etc. ?
     
  14. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    ja, hab ich.
    die programme sind alles listener oder poller, also ich MUSS sie beenden, wenn ich nicht will, dass sie ständig im laufen.
    und nochmal ja, das programm läuft, ich beende es, starte das zweite, beende es, starte das dritte etc. ich habe aber auch schon alle java-programme gleichzeitig laufen gehabt das geht. es gehen auch die php UND java-programme. einfach nicht aus meinem skript raus...
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Wolfgang, 06.01.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Du könntest versuchen mal ein strace davor zu setzen, und den Prozess nicht im Hintergrund starten.
    Eventuell gibt die Ausgabe Aufschluss was da passiert.

    Gruß Wolfgang
     
  17. fuexli

    fuexli Jungspund

    Dabei seit:
    06.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    hmm... mein unix kenn kein strace. (not found) und leider hab ich keine root-rechte um es ihm beizubringen.
     
Thema:

nohup funktionniert nicht richtig - warum??

Die Seite wird geladen...

nohup funktionniert nicht richtig - warum?? - Ähnliche Themen

  1. ssh unter nohup liefert returncode 255

    ssh unter nohup liefert returncode 255: Hallo Gemeinde, ich habe ein ziemlich verzwicktes Problem, dass ich - auch mit schon einigem Support - nicht gelöst bekomme. In meinem Shell...
  2. einen prozess nachträglich in den nohup-status versetzen?

    einen prozess nachträglich in den nohup-status versetzen?: kennt jemand von euch ein programm, dass einen laufenden prozess nachträglich (also zur laufzeit) in den nohup-status versetzen kann? nohup selbst...
  3. Problem mit nohup

    Problem mit nohup: Hallo, ich starte in einer SSH-Konsole ein Programm, welches dann allerdings im Hintergrund weiterlaufen soll, auch wenn ich die Konsole...
  4. HP Touchsmart tx2 | Touchscreen funktionniert nicht

    HP Touchsmart tx2 | Touchscreen funktionniert nicht: Hi Leute, ich besitze ein Hp Touchsmart tx2 1310eg und habe vor 10 Tagen openSUSE 11.2 32-bit installiert und anschließend die...