Im Moment starte ich eine Java-App per SSH auf einer VM in Google Cloud Compute. Ich gebe einen Befehl aus, um die App auszuführen, und sie lädt eine Konsole. Sobald ich die SSH-Verbindung beende, wird die App heruntergefahren. Ich gehe davon aus, dass die Konsole geschlossen wurde.
Ich möchte, dass diese App (die ein Server ist) nach dem Beenden von SSH bestehen bleibt, und ich möchte jederzeit in der Lage sein, die Verbindung zur Konsole wiederherzustellen und Befehle auf dem Server auszugeben.
Antworten:
Sie geben Folgendes an:
Etwas vage Tore, aber ich werde es versuchen!
Um einen Befehl als Hintergrundprozess auf einem Linux-Server auszuführen, sollten Sie dem Befehl ein Präfix voranstellen
nohup
und&
an das Ende anhängen .Der letzte Befehl wäre also:
Das
nohup
bedeutet, dass der Befehl "Auflegen" ignorieren sollte und das&
angehängte kaufmännische Und ein Shell-Befehl ist, der das System anweist, den Befehl als Hintergrundprozess auszuführen. Weitere Informationen zur Verwendung finden Sie hier .Wenn Sie einen Befehl wie diesen ausführen, wird der Prozess ausgeführt, Sie werden zur Eingabeaufforderung zurückgeschickt und Sie können die Terminalsitzung beenden oder während dieser Terminalsitzung etwas anderes tun, das nicht mit diesem Befehl zusammenhängt.
quelle
screen
stattdessen die Verwendung untersuchen, da Sie so nach dem Start wieder in die Sitzung zurückkehren können. Ehrlich gesagt ist Ihre Frage sehr vage. Wenn Sie sie also klären könnten, könnte dies helfen, die Dinge zu klären.tail -f nohup.out
die gleiche Arbeit aus. dir.Es gibt mindestens drei Möglichkeiten, dies zu tun:
nohup
('kein Auflegen'),screen
/tmux
, oderdisown
. Aus Ihrer Frage, ob Sie nach dem Trennen der Verbindung eine Verbindung zum Server herstellen und mit dem Dämon interagieren müssen, ist ein wenig unklar.Wenn dies der Fall ist
nohup
unddisown
keine guten Übereinstimmungen vorliegen, wenn Sie den Prozess freigeben (obwohl er weiterhin ausgeführt wird).tmux
(und auchscreen
) wird einen Begriff auch dann weiterführen, wenn Sie.Weitere Informationen finden Sie auf den jeweiligen Seiten:
Bash disown (vorausgesetzt, Sie führen Bash aus, obwohl viele andere Shell etwas Ähnliches enthalten)
quelle
disown
in Google Cloud keinen Befehl, zumindest die von mir verwendete Instanz, die 2019 oder Ende 2018 gestartet wurde. Dernohup
Befehl funktioniert einwandfrei, erstellt jedoch eine zusätzliche Datei, die möglicherweise nicht erwünscht ist.Verwenden Sie den
nohup
Befehl, um eine Anwendung von ihrer laufenden Shell zu trennen und sie nach dem Beenden der Shell beizubehalten .Sie stellen Ihrem normalen Befehl einfach ein Präfix voran
nohup
und es sollte funktionieren.quelle
Auch wenn nohub nicht funktioniert, können Sie den Bildschirm verwenden :
von
quelle