tatzemax Posted October 22, 2014 at 08:19 AM Posted October 22, 2014 at 08:19 AM Ich habe eine kleines Programm geschrieben welches FerienHaus.jar heist ich möchte gerne das diese beim Starten des PI ausgeführt wird wie der BrickD dazu habe ich den StartScript von BrickD mit meinen Daten geändert aber wenn ich den Script zum Starten in der Konsole ausführe gibt er die Fehlermeldung (Exec formart error) aus. #!/bin/sh ### BEGIN INIT INFO # Provides: FerienHaus # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Ferien Haus # Description: Ferien Haus ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/home/pi/FerienHaus.jar OPTIONS=--daemon NAME=FerienHaus PIDFILE=/var/run/$NAME.pid DESC="Ferien Hause" test -f $DAEMON || exit 0 set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --verbose --pidfile $PIDFILE --exec $DAEMON --start -- $OPTIONS ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --verbose --pidfile $PIDFILE --stop ;; restart|force-reload) echo "Restarting $DESC: " start-stop-daemon --verbose --pidfile $PIDFILE --stop sleep 1 start-stop-daemon --verbose --pidfile $PIDFILE --exec $DAEMON --start -- $OPTIONS ;; status) echo -n "Status of $DESC: " if [ -n "${PIDFILE:-}" -a -r "$PIDFILE" ]; then PID=`cat "$PIDFILE"` if [ -n "${PID:-}" ]; then if $(kill -0 "${PID:-}" 2> /dev/null); then echo "running (pid $PID)" elif ps "${PID:-}" > /dev/null 2>&1; then echo "running (pid $PID)" else echo "stopped" fi else echo "stopped" fi else echo "stopped" fi ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 Quote
photron Posted October 22, 2014 at 03:29 PM Posted October 22, 2014 at 03:29 PM Ein JAR ist keine ausführbare Datei. Die --exec Option des start-stop-daemons erwartet aber eine ausführbare Datei. Es sollte funktionieren, wenn du DAEMON=/home/pi/FerienHaus.jar OPTIONS=--daemon durch DAEMON=java OPTIONS=-jar /home/pi/FerienHaus.jar ersetzt. Unter der Annahme, dass dein FerienHaus.jar einen Main-Class Eintrag im Manifest hat. Quote
Masder Posted October 22, 2014 at 07:47 PM Posted October 22, 2014 at 07:47 PM Hallo tatzemax, ich selbstab habe auch ein java progarm auf dem pi laufen. habe es nach dieser anleitung gemacht hat bei mir einwandfrei geklapt. http://raspberrypi.stackexchange.com/questions/13034/executing-a-jar-file-when-raspberry-boots-up GHruß masder Quote
tatzemax Posted October 24, 2014 at 08:35 AM Author Posted October 24, 2014 at 08:35 AM @ Masder: da habe doch schon mal erste erfolge. allerdings wenn ich das starte über das Terminal dann gibt er mir keine neue Zeile Frei ... @ photron : hat nicht geklappt. er gibt dann folgendes raus. pi@raspberrypi ~ $ /etc/init.d/FerienHaus start /home/pi/FerienHaus.jar: 1: /home/pi/FerienHaus.jar: PK: not found /home/pi/FerienHaus.jar: 2: /home/pi/FerienHaus.jar:▒UE: not found /home/pi/FerienHaus.jar: 3: /home/pi/FerienHaus.jar:UE▒▒vMETA-INF/MANIFEST.MFManifest-Version:: not found PuTTYPuTTY/home/pi/FerienHaus.jar: 4: /home/pi/FerienHaus.jar: Ant-Version:: not found /home/pi/FerienHaus.jar: 5: /home/pi/FerienHaus.jar: Syntax error: "(" unexpected Quote
remotecontrol Posted October 24, 2014 at 08:48 AM Posted October 24, 2014 at 08:48 AM Kannst Du das init-Skript und das jar mal posten? Das sieht so aus, als würdest Du entweder immernoch das jar "direkt" aufrufen oder das jar ist falsch gebaut. Funktioniert die Anwendung, wenn Du von Hand "java -jar /home/pi/FerienHaus.jar" startest? Quote
tatzemax Posted October 24, 2014 at 08:56 AM Author Posted October 24, 2014 at 08:56 AM ja die Funktioniert zur Information dort lauft eine Endlosschleife Quote
photron Posted October 24, 2014 at 09:47 AM Posted October 24, 2014 at 09:47 AM Das init Script wird als root ausgeführt. Funktioniert Folgendes? sudo java -jar /home/pi/FerienHaus.jar Quote
Masder Posted October 24, 2014 at 12:29 PM Posted October 24, 2014 at 12:29 PM Hallo tatzemax, Zu deinem "Fehler" das du keine neue zeile bekomst, nein das ist kein fehler das ist normal unter linux! du mus den Prozes extra in den hintergrund verschieben! Das geht beim aufrufen mit einem "&". einfach nach dem aufruf das & dran hängen und schon sollte es das gewünste ergebnis bringen. hir mal meine beiden Script da habe ich es auch so gemacht. (myapp) #!/bin/bash # myapp # case $1 in start) /bin/bash /home/pi/jar-start.sh ;; stop) /bin/bash /home/pi/jar-stop.sh ;; restart) /bin/bash /home/pi/jar-stop.sh /bin/bash /home/pi/jar-start.sh ;; esac exit 0 jar-start.sh #!/bin/bash sudo java -jar /home/pi/neu.jar& Gruß masder Quote
tatzemax Posted October 25, 2014 at 07:14 AM Author Posted October 25, 2014 at 07:14 AM Das init Script wird als root ausgeführt. Funktioniert Folgendes? sudo java -jar /home/pi/FerienHaus.jar Das Funktioniert einwandfrei. Hallo tatzemax, Zu deinem "Fehler" das du keine neue zeile bekomst, nein das ist kein fehler das ist normal unter linux! du mus den Prozes extra in den hintergrund verschieben! Das geht beim aufrufen mit einem "&". einfach nach dem aufruf das & dran hängen und schon sollte es das gewünste ergebnis bringen. hir mal meine beiden Script da habe ich es auch so gemacht. (myapp) #!/bin/bash # myapp # case $1 in start) /bin/bash /home/pi/jar-start.sh ;; stop) /bin/bash /home/pi/jar-stop.sh ;; restart) /bin/bash /home/pi/jar-stop.sh /bin/bash /home/pi/jar-start.sh ;; esac exit 0 jar-start.sh #!/bin/bash sudo java -jar /home/pi/neu.jar& Gruß masder Danke das hat mir schon mal weitergeholfen. Jetzt noch dach der Anleitung http://wiki.ubuntuusers.de/Dienste#bearbeiten und schon läuft es so wie ich mir das vorgestellt habe. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.