tatzemax Geschrieben October 22, 2014 at 08:19 Geschrieben October 22, 2014 at 08:19 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 Zitieren
photron Geschrieben October 22, 2014 at 15:29 Geschrieben October 22, 2014 at 15:29 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. Zitieren
Masder Geschrieben October 22, 2014 at 19:47 Geschrieben October 22, 2014 at 19:47 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 Zitieren
tatzemax Geschrieben October 24, 2014 at 08:35 Autor Geschrieben October 24, 2014 at 08:35 @ 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 Zitieren
remotecontrol Geschrieben October 24, 2014 at 08:48 Geschrieben October 24, 2014 at 08:48 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? Zitieren
tatzemax Geschrieben October 24, 2014 at 08:56 Autor Geschrieben October 24, 2014 at 08:56 ja die Funktioniert zur Information dort lauft eine Endlosschleife Zitieren
photron Geschrieben October 24, 2014 at 09:47 Geschrieben October 24, 2014 at 09:47 Das init Script wird als root ausgeführt. Funktioniert Folgendes? sudo java -jar /home/pi/FerienHaus.jar Zitieren
Masder Geschrieben October 24, 2014 at 12:29 Geschrieben October 24, 2014 at 12:29 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 Zitieren
tatzemax Geschrieben October 25, 2014 at 07:14 Autor Geschrieben October 25, 2014 at 07:14 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. Zitieren
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.