Führen Sie Jar im Hintergrund unter Linux aus

11

Ich habe ein Glas, das für immer läuft (Endlosschleife mit Socket-Listening-Thread) und brauche es, um jederzeit im Hintergrund zu laufen. Ein Beispiel wäre: "java -jar test.jar" Wie mache ich das? Danke im Voraus!

Benny
quelle

Antworten:

8

verschiedene Wege:

  1. &hinten anhängen . Auf diese Weise wird das Programm jedoch weiterhin beendet, wenn Sie das Terminal geschlossen haben, mit dem das Programm gestartet wurde.

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

  3. Verwenden Sie die disownJobsteuerung 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 wieder herzustellen.

Lie Ryan
quelle
12

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

nohup java -jar test.jar &

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


quelle
7

Wenn mit "jederzeit" gemeint ist, dass es beim Starten des Computers gestartet wird, müssen Sie es als Teil der Startzeitskripte starten. Der schmutzige Weg, dies zu tun, ist hinzuzufügen

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

nach /etc/rc.local (oder ersetzen Sie / dev / null durch Ihre bevorzugte Protokolldatei).

Besser wäre es, ein init.d-Skript zu erstellen, das auf den entsprechenden Runlevels gestartet wird (Sie möchten es möglicherweise nicht auf Runlevel 0, 1 oder 6, zum Beispiel). Auf diese Weise können Sie es auch automatisch neu starten lassen, wenn es stirbt, und eine schönere Oberfläche haben, um es vorübergehend zu stoppen.

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

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


quelle
Eine andere Möglichkeit, wenn Sie möchten, dass es nur mit Benutzer-Perms ausgeführt wird, besteht darin, es in cron zu setzen und '@reboot' als Ausführungszeit zu verwenden. Siehe 'man 5 crontab' für Details.
pjz
3
java -jar test.jar &

Der Operator & erzwingt, dass der Prozess im Hintergrund ausgeführt wird. Anschließend können Sie den Befehl 'top' ausführen, um festzustellen, ob er ausgeführt wird.


quelle
1

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

java -jar test.jar &

quelle
1

Setzen Sie &am Ende:java -jar test.jar &

František Žiačik
quelle