Hallo zusammen.
Ich habe eine Frage bzgl. eines Scriptes für ein Java Programm, was ich gerne beim Starten des Systems ausführen möchte.
Ich habe mir schon einige Threads und auch Google über das Thema Autostart und Java befragt aber noch keine für mich plausible Lösung erarbeiten können.
Ich starte über die Shell folgendes Programm:
nohup java -Djava.library.path=/usr/lib/jni -jar /root/firemergency_linux/bin/firEmergency.jar server --nogui &
Das Programm startet auch im Hintergrund und alles läuft soweit perfekt.
Nun möchte ich gerne diesen Befehl als Dienst ausführen, also so das es beim Start ausgeführt wird. Aber das ganze halt mit Start Stop Restart Funktion.
Dann habe ich mit Hilfe von Google folgendes Script erarbeitet.
#!/bin/bash
### BEGIN INIT INFO
# Provides: firemergency
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop firemergency server
### END INIT INFO
case $1 in
start)
echo "Starting firemergency ..."
if [ ! -f /root/firemergency_linux/pid ]; then
nohup java -Djava.library.path=/usr/lib/jni -jar /root/firemergency_linux/bin/firEmergency.jar server --nogui >> /var/log/firemergency.txt 2>&1 &
echo $! > /root/firemergency_linux/pid
echo "firemergency started ..."
else
echo "firemergency is already running ..."
fi
;;
stop)
if [ -f /root/firemergency_linux/pid ]; then
PID=$(cat /root/firemergency_linux/pid);
echo "Stopping firemergency ..."
kill $PID;
echo "firemergency stopped ..."
rm /root/firemergency_linux/pid
else
echo "firemergency is not running ..."
fi
;;
restart)
if [ -f /root/firemergency_linux/pid ]; then
PID=$(cat /root/firemergency_linux/pid);
echo "Stopping firemergency ...";
kill $PID;
echo "firemergency stopped ...";
rm /root/firemergency_linux/pid
echo "Starting firemergency ..."
nohup java -Djava.library.path=/usr/lib/jni -jar /root/firemergency_linux/bin/firEmergency.jar server --nogui >> /var/log/firemergency.txt 2>&1 &
echo $! > /root/firemergency_linux/firemergency/pid
echo "firemergency started ..."
else
echo "firemergency is not running ..."
fi
;;
esac
Alles anzeigen
Als Log kommt folgendes heraus.
Übergebene Paramter: [server, --nogui]
18:25:30.352 [main] DEBUG u.o.l.s.c.SysOutOverSLF4JInitialiser - Your logging framework class ch.qos.logback.classic.Logger should not need access to the standard println methods on the console, so you should not need to register a logging system package.
18:25:30.459 [main] INFO u.o.l.s.context.SysOutOverSLF4J - Replaced standard System.out and System.err PrintStreams with SLF4JPrintStreams
18:25:30.501 [main] INFO u.o.l.s.context.SysOutOverSLF4J - Redirected System.out and System.err to SLF4J for this context
18:25:30.507 [main] INFO starter.Starter - Starte...
18:25:30.536 [main] INFO starter.Starter - Java-Version: 1.8.0_60
18:25:30.538 [main] INFO starter.Starter - Java-Home: /usr/lib/jvm/java-8-oracle/jre
18:25:30.539 [main] INFO starter.Starter - Working-Dir: /
18:25:30.541 [main] INFO starter.Starter - OS: Linux (arm)
18:25:30.858 [main] INFO starter.Starter - Überprüfe Lizenz...
18:25:32.756 [main] INFO starter.StarterLicenseAddition - AlarmMonitor 3 Plugin wurde nicht aktiviert. Keine Alarmweitergabe an den AM3 möglich!
18:25:32.757 [main] INFO starter.Starter - -----------------------
18:25:32.763 [main] INFO starter.Starter - Lizenz: Community-Edition (Free)
18:25:32.764 [main] INFO starter.Starter - ESPA: NICHT AKTIVIERT
18:25:32.766 [main] INFO starter.Starter - AM3: NICHT AKTIVIERT
18:25:32.767 [main] INFO starter.Starter - -----------------------
18:25:32.769 [main] INFO starter.Starter - Version: 1.1
18:25:32.770 [main] INFO starter.Starter - Status: release
18:25:32.771 [main] INFO starter.Starter - Starte: Server
18:25:32.772 [main] INFO starter.Starter - -----------------------
18:25:32.891 [main] ERROR org.apache.log4j.helpers.LogLog - log4j:ERROR Could not read configuration file [//files/log4j.properties].
18:25:32.895 [main] ERROR java.lang.Throwable - java.io.FileNotFoundException: /files/log4j.properties (No such file or directory)
18:25:32.896 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open0(Native Method)
18:25:32.898 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open(FileInputStream.java:195)
18:25:32.899 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:138)
18:25:32.899 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:93)
18:25:32.900 [main] ERROR java.lang.Throwable - at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:372)
18:25:32.901 [main] ERROR java.lang.Throwable - at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:403)
18:25:32.902 [main] ERROR java.lang.Throwable - at server.Launcher.main(Launcher.java:107)
18:25:32.902 [main] ERROR java.lang.Throwable - at starter.Starter.main(Starter.java:222)
18:25:32.903 [main] ERROR org.apache.log4j.helpers.LogLog - log4j:ERROR Ignoring configuration file [//files/log4j.properties].
18:25:32.904 [main] INFO Launcher - Server startet...
18:25:32.904 [main] INFO Launcher - Aktuelle Version: Community-Edition (Free)
18:25:32.942 [main] ERROR Launcher - Konnte PortRMI.txt nicht lesen
java.io.FileNotFoundException: /files/portsRMI.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_60]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_60]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_60]
at server.Launcher.CHECK_INPUT_ARGS(Launcher.java:455) [firEmergency.jar:na]
at server.Launcher.main(Launcher.java:128) [firEmergency.jar:na]
at starter.Starter.main(Starter.java:222) [firEmergency.jar:na]
18:25:32.948 [main] INFO server.AdditinalJarPool - //files/additionalJars
18:25:32.957 [main] ERROR server.AdditinalJarPool - null
java.lang.NullPointerException: null
at server.JarFinder.search(JarFinder.java:81) ~[firEmergency.jar:na]
at server.AdditinalJarPool.startJarInit(AdditinalJarPool.java:34) ~[firEmergency.jar:na]
at server.Launcher.main(Launcher.java:130) [firEmergency.jar:na]
at starter.Starter.main(Starter.java:222) [firEmergency.jar:na]
18:25:32.959 [main] DEBUG Launcher - Config Directory: //Config/
18:25:32.964 [main] INFO server.PluginPool - //files/plugins
18:25:32.966 [main] ERROR java.lang.Throwable - java.lang.NullPointerException
18:25:32.967 [main] ERROR java.lang.Throwable - at server.JarFinder.search(JarFinder.java:81)
18:25:32.968 [main] ERROR java.lang.Throwable - at server.PluginPool.startPluginInit(PluginPool.java:48)
18:25:32.969 [main] ERROR java.lang.Throwable - at server.Launcher.main(Launcher.java:135)
18:25:32.970 [main] ERROR java.lang.Throwable - at starter.Starter.main(Starter.java:222)
18:25:32.971 [main] ERROR server.PluginPool - Error: null
java.lang.NullPointerException: null
at server.JarFinder.search(JarFinder.java:81) ~[firEmergency.jar:na]
at server.PluginPool.startPluginInit(PluginPool.java:48) ~[firEmergency.jar:na]
at server.Launcher.main(Launcher.java:135) [firEmergency.jar:na]
at starter.Starter.main(Starter.java:222) [firEmergency.jar:na]
18:25:32.972 [main] DEBUG Launcher - Instanziiere...
18:25:32.978 [main] DEBUG server.data.DataManagement - Konstruktor aufgerufen, Parameter: //Config/
18:25:32.982 [main] INFO server.data.DataManagement - Konvertiere AlarmHistory
18:25:32.983 [main] INFO server.data.DataManagement - Keine AlarmHistory als Einzeldatei vorhanden. Konvertierung wird nicht durchgeführt.
18:25:33.048 [main] INFO server.input.InputPool - //files/inputPlugins
18:25:33.050 [main] INFO server.input.InputPool - Error: java.lang.NullPointerException
18:25:33.051 [main] DEBUG server.data.DataManagement - Konvertiere settings.fdb nach settings.json...
18:25:33.137 [main] DEBUG server.address.AddressGenerator - Lade Adress-Erkennungs-Einstellungen...
18:25:33.139 [main] DEBUG server.address.AddressGenerator - Suche Objekte an Hand der Adresse: Ja
18:25:33.140 [main] DEBUG server.address.AddressGenerator - Suche Objekte auf Grund ihres EXAKTEN Objekt-Namens: Ja
18:25:33.140 [main] DEBUG server.address.AddressGenerator - Latitude kommt vor Longitude (X,Y)
18:25:33.141 [main] INFO s.a.AddressGeneratorStreetDictionary - Importiere Straßenverzeichnis aus //Config/strassenverzeichnis.csv
18:25:33.147 [main] WARN s.a.AddressGeneratorStreetDictionary - Straßenverzeichnisses wurde nicht angelegt: /Config/strassenverzeichnis.csv (No such file or directory)
18:25:33.152 [main] INFO server.address.AddressGenerator - Importiere Objektverzeichnis aus //Config/gebaeudeverzeichnis.csv
18:25:33.153 [main] INFO server.address.AddressGenerator - Objektverzeichnis existiert nicht
18:25:33.157 [main] DEBUG s.a.AddressGeneratorStreetDictionary - Verhalten bei mehreren Adressen: Intelligente Auswahl
18:25:33.160 [main] INFO server.data.UserManagement - Benutzer mit eingeschränkten Rechten dürfen KEINEN manuellen Alarm ausführen
18:25:33.165 [main] DEBUG server.splitter.AlarmSplitter - Wartezeit vor Eingang: 60s, Nach Eingang 5s
18:25:33.166 [main] DEBUG Launcher - Instanziierung abgeschlossen
18:25:33.175 [main] INFO RXTXInstaller - Ermitteltes Betriebssystem: linux, arm
18:25:33.176 [main] ERROR RXTXInstaller - Keine gültige Architektur: arm
18:25:33.257 [main] DEBUG RemoteGUIServer - Starte SSL-RMI für GUI
18:25:33.258 [main] DEBUG RemoteGUIServer - RMI-Port: 1099
18:25:33.278 [main] ERROR java.lang.Throwable - java.io.FileNotFoundException: /files/emnosCert (No such file or directory)
18:25:33.279 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open0(Native Method)
18:25:33.280 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open(FileInputStream.java:195)
18:25:33.280 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:138)
18:25:33.281 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:93)
18:25:33.282 [main] ERROR java.lang.Throwable - at server.gui.rmi.ssl.RMISSLServerSocketFactory.<init>(RMISSLServerSocketFactory.java:73)
18:25:33.283 [main] ERROR java.lang.Throwable - at server.gui.rmi.RemoteGUIServer.INIT_RMI(RemoteGUIServer.java:181)
18:25:33.284 [main] ERROR java.lang.Throwable - at server.Launcher.main(Launcher.java:192)
18:25:33.285 [main] ERROR java.lang.Throwable - at starter.Starter.main(Starter.java:222)
18:25:33.287 [main] ERROR RemoteGUIServer - Fehler beim Starten des RMI-GUI Dienstes
java.io.FileNotFoundException: /files/emnosCert (No such file or directory)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_60]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_60]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_60]
at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[na:1.8.0_60]
at server.gui.rmi.ssl.RMISSLServerSocketFactory.<init>(RMISSLServerSocketFactory.java:73) ~[firEmergency.jar:na]
at server.gui.rmi.RemoteGUIServer.INIT_RMI(RemoteGUIServer.java:181) ~[firEmergency.jar:na]
at server.Launcher.main(Launcher.java:192) [firEmergency.jar:na]
at starter.Starter.main(Starter.java:222) [firEmergency.jar:na]
18:25:33.301 [main] DEBUG RemoteGUIClient - Starte SSL-RMI für Client- GUI
18:25:33.302 [main] DEBUG RemoteGUIClient - RMI-Client-Port: 1098
18:25:33.304 [main] ERROR java.lang.Throwable - java.io.FileNotFoundException: /files/emnosCert (No such file or directory)
18:25:33.305 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open0(Native Method)
18:25:33.306 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.open(FileInputStream.java:195)
18:25:33.307 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:138)
18:25:33.308 [main] ERROR java.lang.Throwable - at java.io.FileInputStream.<init>(FileInputStream.java:93)
18:25:33.308 [main] ERROR java.lang.Throwable - at server.gui.rmi.ssl.RMISSLServerSocketFactory.<init>(RMISSLServerSocketFactory.java:73)
18:25:33.309 [main] ERROR java.lang.Throwable - at server.gui.rmi.RemoteGUIClient.INIT_RMI(RemoteGUIClient.java:101)
18:25:33.310 [main] ERROR java.lang.Throwable - at server.Launcher.main(Launcher.java:195)
18:25:33.310 [main] ERROR java.lang.Throwable - at starter.Starter.main(Starter.java:222)
18:25:33.312 [main] ERROR RemoteGUIClient - Fehler beim Starten des RMI-Client-GUI Dienstes
java.io.FileNotFoundException: /files/emnosCert (No such file or directory)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_60]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_60]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_60]
at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[na:1.8.0_60]
at server.gui.rmi.ssl.RMISSLServerSocketFactory.<init>(RMISSLServerSocketFactory.java:73) ~[firEmergency.jar:na]
at server.gui.rmi.RemoteGUIClient.INIT_RMI(RemoteGUIClient.java:101) ~[firEmergency.jar:na]
at server.Launcher.main(Launcher.java:195) [firEmergency.jar:na]
at starter.Starter.main(Starter.java:222) [firEmergency.jar:na]
18:25:33.319 [main] ERROR java.lang.Throwable - Exception in thread "main" java.lang.NullPointerException
18:25:33.320 [main] ERROR java.lang.Throwable - at server.gui.LanguageAssistant.lookForLanguages(LanguageAssistant.java:50)
18:25:33.321 [main] ERROR java.lang.Throwable - at server.Launcher.main(Launcher.java:198)
18:25:33.322 [main] ERROR java.lang.Throwable - at starter.Starter.main(Starter.java:222)
Alles anzeigen
Mit den Error meldungen kann ich leider nicht wirklich etwas anfangen. Ist dies ein Problem meines Scriptes oder ein Problem des Java Programmes?
Was ich mir auch schon einfallen lassen habe, ist das ich einfach den Befehl den ich in die Shell eingebe ebenfalls in eine Datei Schreibe und dann mit Cron ausführe.
#!/bin/sh
nohup java -Djava.library.path=/usr/lib/jni -jar /root/firemergency_linux/bin/firEmergency.jar server --nogui &
Kann mir jemand evtl. noch ein paar Tips oder Ideen geben? Muss dazu sagen das ich mich nicht wirklich gut mit Linux auskenne.
Vielen Dank schon mal im vorfeld.