Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted

@ 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

Posted

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?

Posted

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

 

 

Posted

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.

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...