2010-12-21 17 views
1

Ich versuche, meine Java-App mit jsvc zu deamonisieren. Das ist mein Init-SkriptJSVC InitScript wird nicht beendet

#!/bin/sh 

# CONFIG 
JSVC=/opt/jsvc/jsvc 
JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 
USER=gserv 
ARGS=none 
# END CONFIG 

PIDFILE=/var/run/silvercar-gameserver.pid 
LOGDIR=/var/log/silvercar-gameserver 

case "$1" in 
     start) 
       export JAVA_HOME 
       cd `dirname $0` 
       $JSVC -jvm server -pidfile $PIDFILE -user $USER -outfile $LOGDIR/stdout -errfile $LOGDIR/stderr \ 
         -cp `cat classpath` tr.silvercar.gameserver.runner.DeamonGameServer $ARGS 
       ;; 
     stop) 
       $JSVC -stop -pidfile $PIDFILE 
       ;; 
esac 

exit 0 

Als ich ./thisscript.sh start als root zwei Dinge schief gehen laufen, und ich vermute, sie bezogen werden:

  • Die App startet, aber sein Ausgang wird statt gespeichert auf die gezeigten spezifiziertes Outfile
  • Das Skript wird nicht beendet, sondern blockiert, bis ich Ctrl+C drücke.

Was mache ich falsch?

Antwort

0

Ich sehe nichts falsch in Ihrem Start-Skript; Vielleicht gibt es ein Problem in Ihrer Service-Implementierung DeamonGameServer. Versuchen Sie, Ihre Klasse durch eine einfache Implementierung des Daemon-Skeletts zu ersetzen und sehen Sie, was passiert.

Beachten Sie außerdem, dass in jsrv ein offener Fehler vorliegt: Jsvc does not exit when all non-daemon threads are dead.

+0

Ich glaube nicht, dass mit meiner App etwas nicht stimmt. 'DaemonGameServer.start()' gibt zurück (Ich habe eine Protokollanweisung am Ende davon), aber ich werde es überprüfen. –

+0

Hmm, ich habe das Verzeichnis für die Log-Dateien erstellt (es existierte noch nicht) und plötzlich funktioniert es jetzt. Sehr seltsam, weil es die App nicht gestartet haben sollte, wenn ein Fehler aufgetreten ist. Vielleicht habe ich auch etwas anderes verändert. –

+0

Nun, obwohl Ihre Antwort nicht die Lösung war, hier ist ein Akzeptieren für die Mühe :) –

Verwandte Themen