Jump to content

[Java] Start Stop Script @Rasp


tatzemax

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

@ 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

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...