Führen Sie Jar unter Linux im Hintergrund aus

Führen Sie Jar unter Linux im Hintergrund aus

Ich habe ein Jar, das ewig läuft (Endlosschleife mit Socket-Listening-Thread) und muss es ständig im Hintergrund laufen lassen. Ein Beispiel wäre: „java -jar test.jar“ Wie mache ich das? Vielen Dank im Voraus!

Antwort1

verschiedene Wege:

  1. Anhängen &am Ende. Allerdings wird das Programm dadurch trotzdem beendet, wenn Sie das Terminal schließen, das das Programm gestartet hat.

  2. Starten Sie eine screenSitzung und starten Sie das Programm darin. Sie können die screenSitzung trennen und das Terminal schließen. Später können Sie sich wieder mit der Sitzung verbinden und befinden sich wieder auf der Konsole, als ob Sie die ganze Zeit dort gewesen wären. Sie müssen jedoch eine Bildschirmsitzung starten, bevor Sie das Programm ausführen. Wenn Sie das vergessen haben, können Sie nichts dagegen tun.

  3. Verwenden Sie disowndie Jobsteuerung von Ihrer Shell aus. Dadurch wird die Aufgabe von Ihrem TTY getrennt und Ihr Programm wird nicht beendet, wenn das TTY geschlossen wird. Ich glaube jedoch nicht, dass es eine Möglichkeit gibt, einen abgelehnten Job erneut anzufügen.

Antwort2

Eine Befehlszeilenaufforderung, die ich immer für lange Laufzeiten verwendet habe, um Abmeldungen zu überstehen, ist "nohup", also in Ihrem Fall

nohup java -jar test.jar &

Das & ist wichtig, damit Sie eine andere Shell zum Laufen bringen können. Ich glaube nicht, dass dies Neustarts überdauern wird.

Antwort3

Wenn Sie mit "immer" meinen, dass es beim Booten des Rechners gestartet wird, müssen Sie es als Teil der Boot-Skripte starten. Die schmutzige Art, dies zu tun, besteht darin, hinzuzufügen

java -jar test.jar >/dev/null 2>&1 &

in /etc/rc.local(oder ersetzen Sie es /dev/nulldurch Ihre bevorzugte Protokolldatei).

Besser wäre es, ein init.dSkript zu erstellen, das auf den entsprechenden Runlevels gestartet wird (Sie möchten es vielleicht nicht auf Runlevel 0, 1 oder 6). Auf diese Weise können Sie es auch automatisch neu starten lassen, wenn es abstürzt, und Sie haben eine schönere Schnittstelle, um es vorübergehend zu stoppen.

Kleine Beispiele beihttp://www.howtoforge.com/forums/archive/index.php/t-3628.html

Große Erklärung beihttp://developer.novell.com/wiki/index.php/Writing_Init_Scripts

Antwort4

Sie können unter Linux jede Aufgabe im Hintergrund ausführen, indem Sie an das Ende der Befehlszeile ein '&'-Symbol anhängen, z. B.

java -jar test.jar &

verwandte Informationen