Autostart einer .jar Datei funktioniert nicht

SteigerMP

Banned
Registriert
Juli 2013
Beiträge
393
Hallo, ich habe auf einem Raspberry PI die abgespeckte Raspbian Lite Version installiert, auf der eine Java Datei 24/7 laufen soll.
Ich habe Java installiert bekommen und kann die entsprechende Datei auch über Putty auf dem Raspberry starten wie gewünscht.

Beende ich Putty, obwohl der Pi noch eingeschaltet ist, beendet sich auch die Java Datei und funktioniert erst wieder, wenn ich mich über Putty einlogge und die Datei starte. Das ist nicht Sinn der Sache, daher habe ich nach einer Möglichkeit gesucht, wie ich die Datei dauerhaften laufen lassen kannen und dass diese sich auch im Falle eines Neustarts wieder von selbst startet.

Über Google stieß ich auf diese Anleitung in der kurz gesagt 3 Dateien erstellt werden. Eine Start.sh und eine Stopp.sh Datei für die Java Datei. Dazu eine Datei, die scheinbar für den Autostart sorgt im /etc/init.d Ordner.

Ich habe keine großartige Erfahrung mit Linux habe die Anleitung so umgesetzt:
Vorweg: in Benutzerverzeichnis "Pi" liegt auch die Java Datei. Die Datei ermöglicht die Konfiguration des Java Programms über ein Webinterface, welches über den Port 7134, also <lokale-IP-des-PI>:7134, erreichbar ist. In der Anleitung wird der Port 8888 angegeben aber auch der funktioniert bei mir nicht.

1. Start.sh angelegt
Bash:
#!/bin/bash
cd /home/pi/
java -jar dateiname.jar --server.port=7134 &


2. Stopp.sh angelegt
Bash:
#!/bin/bash
sudo fuser 7134/tcp -k || true


3. Anlegen der Autostart Datei (ohne .sh) im Ordner /etc/init.d
Bash:
#!/bin/bash

case $1 in
    start)
        /bin/bash /home/pi/start.sh
    ;;
    stop)
        /bin/bash /home/pi/stopp.sh 
    ;;
    restart)
        /bin/bash /home/pi/stopp.sh
        /bin/bash /home/pi/start.sh
    ;;
esac
exit 0


4. Autostart Datei ausführbar machen
Bash:
cd /etc/init.d/
sudo chmod +x Autostart


5. Autostart Script soll auch nach einem Neustart von alleine starten
Bash:
sudo update-rc.d Autostart defaults


Alle Eingaben sind ohne Fehlermeldungen durchgelaufen. Ich weiß nicht was ich falsch mache.
 
SteigerMP schrieb:
Beende ich Putty, obwohl der Pi noch eingeschaltet ist, beendet sich auch die Java Datei und funktioniert erst wieder, wenn ich mich über Putty einlogge und die Datei starte
Für längeres Testen gibt es tmux oder screen mit denen SSH Sitzungen nach ausloggen weiterlaufen.

Ansonsten
SteigerMP schrieb:
Dort wird weiter untern doch auf eine weitere Anleitung verlinkt, die sich etwas konformer - LSB = Linux Standard Base - verhält - Dort ist der Java Aufruf anders und die Pfade sind gesetzt - meist sind bei Init-Skripten/Daemons die Umgebungsvariablen anders als bei einer Nutzer-SSH Session.
beispiel der Pfad zu java ist nicht bekannt, da PATH nicht gesetzt ist
zB Aufruf aus der anderen Anleitung mit LSB
nohup java -jar $JAR_FILE /tmp 2>> /dev/null >> /dev/null &

ansonsten wäre ein google Suchbegriff "daemonize java programs" - statt init.d skripten ist bei den meisten Distributionen inzwischen systemd verbreiteter
 
Und wenn man mal ein Programm von Hand im Hintergrund laufen lassen möchte (das unabhängig vom startenden Terminal/Shell läuft, bzw. das Schließen selbiger überlebt), nimmt man setsid [...] &.
Zum Beispiel: setsid java -jar dateiname.jar --server.port=7134 &
 
Zuletzt bearbeitet:
Zurück
Oben