Java Programm automatisch beim Start der DS starten

Status
Für weitere Antworten geschlossen.

Herbert_Testmann

Benutzer
Mitglied seit
27. Jul 2009
Beiträge
1.114
Punkte für Reaktionen
1
Punkte
64
Hallo

der im Titel genannte Wunsch ist eigentlich schon der zweite Schritt.

Ich möchte, dass ein Java Programm ständig auf der DS läuft.
Per Terminal starte ich das Programm mit
java -jar /volume1/programmordner/programm.jar

gestoppt wird im Terminal mit STRG + C

Wenn ich das Terminalfenster schließe, wird auch das Jave Programm beendet.

Ich würde das Programm gern mit einem Start / Stop Script starten und sauber beenden. Da habe ich allerdings gar keine Idee.

Kann ir jemand helfen ??
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
Vielleicht hilft dir das ja schon weiter:

Muss halt noch der JAVA_HOME pfad eingetragen werden!

Rich (BBCode):
#!/opt/bin/bash

PATH="/opt/sbin:/opt/bin:$PATH"

NAME="programm"
DESC="programm"
DIR="/volume1/programmordner"
JAVA_HOME=""
PARAMS="$JAVA_HOME/java -jar"
CMD="programm.jar"

##########################################################################

case "$1" in
	start)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e "$DESC läuft bereits!"
		else
			echo -e "Starte $DESC"
			cd $DIR; screen -d -m -S $NAME $PARAMS $CMD
		fi
	;;

	stop)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e -n "Stoppe $DESC"
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo -e " ...done."
		else
			echo -e "Keinen laufenden $DESC gefunden!"
		fi
	;;

	restart)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e -n "Stoppe $DESC"
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo -e " ...done."
		else
			echo -e "Kein laufenden $DESC gefunden!"
		fi

		echo -e -n "Starte $DESC"
		cd $DIR; screen -d -m -S $NAME $PARAMS $CMD
		echo -e " ...done."
	;;

	status)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e "$DESC ist online"
		else
			echo -e "$DESC ist offline"
		fi
	;;
	
	*)
		echo "Benutze: $0 {start|stop|restart|status}"
		exit 1
	;;
esac

exit 0
 

Herbert_Testmann

Benutzer
Mitglied seit
27. Jul 2009
Beiträge
1.114
Punkte für Reaktionen
1
Punkte
64
Hallo

vielen Dank erst einmal. Wird wohl bis zum neuen Jahr dauern, bis ich das teste. 2 Tage vor dem Urlaub noch neue Programme einrichten, birgt ein gewisses Risiko ;-)

Weiss zufällig jemand, wohin JAVA installiert wird, wenn ich das Paket "Javamanager" zur Installation benutzt habe.
Ich habe schon alle möglichen Verzeichnisse durchsucht, kann es aber nicht finden.
Es muesste eigentlich im Path stehen, da ich den Befehl von überall aufrufen kann.
Dümmliche Frage ... wie lasse ich auf der Konsole den Inhalt von Path ausgeben ? :eek:

schönes Rest Fest noch
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
echo $PATH
 

Herbert_Testmann

Benutzer
Mitglied seit
27. Jul 2009
Beiträge
1.114
Punkte für Reaktionen
1
Punkte
64
und hier noch schnell die Antwort...

/var/packages/JavaManager/target/Java/bin
/var/packages/JavaManager/target/Java/jre/bin
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
Hast du eigentlich optware drauf?
Das brauchst du nämlich um über ipkg das paket "screen" und "bash" zu installieren.
In dem screen wird dann sozusagen dein javaprogramm ausgeführt und wird auch nach der beendigung der konsole nicht geschlossen, was ja dein Ziel ist wenn ich dich richtig verstanden habe.
 

Herbert_Testmann

Benutzer
Mitglied seit
27. Jul 2009
Beiträge
1.114
Punkte für Reaktionen
1
Punkte
64
Hallo

nein, ipkg habe ich nicht drauf. Das hätte ich gern, weil ich dann das Paket "mc" installieren könnte.
Leider hatte ich noch nicht die zeit mich damit zu beschäftigen, wie ich ipkg auf die DS214play bekomme. Auf der DS109 hatte ich das immer.

Aber noch mal zurück zum Thema
Aus einem anderen Forum habe ich folgendes Script bekommen, das offenbar erst mal mei Problem löst ...

Rich (BBCode):
    #!/bin/sh

    start() {
       cd /volume1/ccu-historian
       nohup java -jar ccu-historian.jar 2>/dev/null &
       return 0
    }

    stop() {
       kill `ps |grep ccu |grep -v grep | cut -c 1-5`
       return 0
    }

    case "$1" in
       start)
          start
       ;;
       stop)
          stop
       ;;
       restart)
          stop
          start
       ;;
       *)
       exit 1
    esac
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
Auch ne möglichkeit wenn sie denn funktioniert, habe sie jetzt nicht getestet.
Ich persönlich habe mit nohub auf der DS keine guten Erfahrungen gemacht, wollte bei mir nie wirklich so wie ich es wollte. ^^
Mit screen allerding, konnte ich bis jetzt immer alle meine Probleme lösen.

Die hauptsache ist, das dein Problem gelöst ist.

Wie sagt man doch so schön, viele Wege führen nach Rom. :)

mfg
 

bIGbLIZZo

Benutzer
Mitglied seit
23. Feb 2016
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo, tut mir leid dass ich so ein alter Thread wieder hoch hole. Ich hatte dass Script ein gutes Jahr am laufen um meine Philips Hue Lichter mit dem Fernsehr abzustimmen. Nun habe ich eine neue DS da die alte nicht mehr Funktionierte und habe dadurch das Script verloren. Ich hatte damals schon grosse Probleme aber habe das Ding irgendwie zum laufen gebracht. Leider gelingt mir dies kein Zweitesmal. Ich komme einfach nicht mehr weiter. Hoffe es findet sich ein Gutmensch der mir unter die Arme greift.

Rich (BBCode):
#!/opt/bin/bash

PATH="/opt/sbin:/opt/bin:$PATH"

NAME="hambisync"
DESC="hambisync"
DIR="/volume1/system/install/hambisync/bin/"
JAVA_HOME="/var/packages/JavaManager/target/Java/jre/lib"
PARAMS="$JAVA_HOME/java -jar"
CMD="hambisync.jar"

##########################################################################

case "$1" in
	start)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e "$DESC läuft bereits!"
		else
			echo -e "Starte $DESC"
			cd $DIR; screen -d -m -S $NAME $PARAMS $CMD
		fi
	;;

	stop)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e -n "Stoppe $DESC"
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo -e " ...done."
		else
			echo -e "Keinen laufenden $DESC gefunden!"
		fi
	;;

	restart)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e -n "Stoppe $DESC"
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo -e " ...done."
		else
			echo -e "Kein laufenden $DESC gefunden!"
		fi

		echo -e -n "Starte $DESC"
		cd $DIR; screen -d -m -S $NAME $PARAMS $CMD
		echo -e " ...done."
	;;

	status)
		if [[ `screen -ls | grep $NAME` ]]; then
			echo -e "$DESC ist online"
		else
			echo -e "$DESC ist offline"
		fi
	;;
	
	*)
		echo "Benutze: $0 {start|stop|restart|status}"
		exit 1
	;;
esac

exit 0

Und hier der Fehlercode den ich immer wieder erhalte

Rich (BBCode):
: not foundstem/root/usr/local/etc/rc.d/hambisync.sh: line 2:
: not foundstem/root/usr/local/etc/rc.d/hambisync.sh: line 4:
: not foundstem/root/usr/local/etc/rc.d/hambisync.sh: line 11:
: not foundstem/root/usr/local/etc/rc.d/hambisync.sh: line 13:
/volume1/system/root/usr/local/etc/rc.d/hambisync.sh: line 14: syntax error: unexpected word (expecting "in")

Ich weiss nicht mehr weiter und würde gerne meine Zeitgesteuerte Lichtquelle wieder haben ohne dass ich immer den Screenbefehl per Telnet bei einem neustart der DS machen muss.

Vieleicht gibt es auf einen einfacherenweg da ich schlusseindlich beim Startup nur ein "screen /volume1/system/install/hambisync/bin/hambisync.sh" brauche, aber ich kenne mich da einfach zu wenig aus und war damals so stolz das es nach Stundenlangem rumprobieren endlich geschafft hatte

Ich weiss dass ich es damals mit der jar Datei nicht hinbekommen habe und auf die SH Datei von Hambisync zurückgreiffen musste, diese sieht wiefolgt aus

Rich (BBCode):
#!/bin/sh

READLINK=`which readlink`
SCRIPT_LOCATION=$0
if [ -x "$READLINK" ]; then
  while [ -L "$SCRIPT_LOCATION" ]; do
    SCRIPT_LOCATION=`"$READLINK" -e "$SCRIPT_LOCATION"`
  done
fi

cd `dirname "$SCRIPT_LOCATION"`
java -jar hambisync.jar

Schon einmal ein liebes Dankeschön
bIGbLIZZo
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat