Ich muss ein Java-JAR auf dem Server ausführen, um zwischen zwei Anwendungen zu kommunizieren. Ich habe zwei Shell-Skripte geschrieben, um es auszuführen, aber sobald ich dieses Skript gestartet habe, kann ich den Prozess nicht herunterfahren / beenden. Wenn ich ctrl+ drücke Coder die Konsole schließe, wird der Server heruntergefahren. Kann mir jemand helfen, wie ich dieses Skript so ändern kann, dass es als normaler Server ausgeführt wird?
#!/bin/sh
java -jar /web/server.jar
echo $!
#> startupApp.pid
shell
unix
executable-jar
Bernad Ali
quelle
quelle
nohup
sollte immer mit der expliziten Umleitung von stdout und stderr kombiniert werden. Andernfalls erhalten Sie keine Kontrolle darüber, wohin die Protokolle gehen, und es wird hässlichnohup.out
erstellt, in welchem Verzeichnis dieses Skript gerade aufgerufen wird.Systemd, das jetzt in den meisten Distributionen läuft
Schritt 1:
Finden Sie Ihre benutzerdefinierten Dienste, bei denen meine war
/usr/lib/systemd/system/
Schritt 2:
Erstellen Sie eine Textdatei mit dem Namen Ihres bevorzugten Texteditors
whatever_you_want.service
Schritt 3:
Fügen Sie die folgende Vorlage in die Datei ein
whatever_you_want.service
Schritt 4:
Führen Sie Ihren Dienst
als Superuser aus
quelle
Wenn Sie Ubuntu verwenden und "Upstart" ( http://upstart.ubuntu.com/ ) haben, können Sie Folgendes versuchen:
Erstellen
/var/init/yourservice.conf
mit folgendem Inhalt
Jetzt können Sie die Befehle
service yourservice start
und ausgebenservice yourservice stop
. Sie können nachverfolgen/var/log/yourservice.log
, ob es funktioniert.Wenn Sie Ihr Glas nur von der Konsole aus ausführen möchten, ohne das Konsolenfenster zu belasten, können Sie Folgendes tun:
quelle
java -jar /web/server.jar > /var/log/yourservice.log 2>&1 &
Führen Sie es im Hintergrund aus und fügen Sie der Protokolldatei folgende Protokolle hinzu:
quelle