Setzen Sie die SSH-Hintergrundaufgabe / -aufträge fort, wenn Sie SSH schließen

27

Ich habe die gleiche Frage wie hier, aber auch darüber hinaus.

Wenn ich mich auslogge / die SSH-Verbindung beende, muss mein Programm im Hintergrund laufen. Vor dem Beenden gebe ich Folgendes ein bgund jobsüberprüfe, ob ein Task im Hintergrund ausgeführt wird. Nach dem Beenden von SSH wird das Programm jedoch nicht ausgeführt. Es wird geschlossen, wenn ich das SSH-Fenster schließe.

Was kann ich tun, wenn mein Programm nach dem Schließen des SSH-Fensters noch ausgeführt werden soll? Ich benutze, nohup screenaber es funktioniert auch nicht, oder fehlt mir etwas?

Huei
quelle
Willkommen bei Super User! Bitte geben Sie Ihre Antwort nicht in die Frage ein. Veröffentlichen Sie es unten als Antwort, sobald Sie (in ungefähr 7 Stunden) die Schaltfläche Beantworten Sie Ihre Frage verwenden können . Vielen Dank. (Beachten Sie auch, dass Sie <br/>Ihrem Beitrag kein s hinzufügen müssen . Machen Sie nur die erforderlichen Absätze. Und während Sie dabei sind, verwenden Sie bitte die richtige
Groß- und Kleinschreibung
BTW keine Notwendigkeit zu verwenden bgoder nohupbei der Verwendung screen. Auch diese Frage ist verwandt.
Justbrowsing
Sie machen diesen Thread @ Stapelüberlauf überprüfen stackoverflow.com/questions/285015/…
Ashildr

Antworten:

46

Wenn Sie verwenden screen, müssen Sie mit + trennen, bevor Sie beenden .CTRL+ADssh

Wenn Sie einen Prozess direkt mit dem Bildschirm ausführen möchten, können Sie ihn alternativ verwenden

screen -dmSL [session name] [commands]
  • -d Startet eine Bildschirmsitzung und trennt sich sofort davon
  • -m erzwingt das Erstellen einer neuen Bildschirmsitzung
  • -S Mit dieser Option können Sie der Sitzung einen Namen geben
  • -L Aktiviert die Protokollierung von ~/screenlog.0

Beispiel:

screen -dmSL workstuff myscript.sh

Sie können dann entweder:

später fortsetzen mit screen -x workstuff

oder

Überprüfen Sie die Protokolldatei less -r ~/screenlog.0

ich schaue nur
quelle
14

Verwenden Sie tmux. Ich bin mir nicht mal sicher, ob screenes überhaupt noch in der aktiven Entwicklung ist. Es ist eine Art Präferenzsache, aber als jemand, der es benutzt tmux, kann ich bezeugen, dass es in ungefähr 5 Minuten eingerichtet wurde und perfekt funktionierte.

Auf einem Debian-basierten System (auf der entfernten Maschine):

sudo apt-get install tmux

Geben tmuxSie dann ein , um den gewünschten Vorgang auszuführen, und drücken Sie dann Ctrl+ (dies verlässt die tmux-Sitzung). Anschließend können Sie sich von SSH abmelden.BD

Wenn Sie zurückkommen / es erneut überprüfen müssen, starten Sie SSH und geben Sie ein tmux attach. Sie kehren dann zu Ihrer tmuxSitzung zurück.

tmuxverfügt über viele weitere Funktionen, wie hier beschrieben. Dies sollte jedoch Ihr unmittelbares Problem lösen.

Viel Glück!

evamvid
quelle
7

Endlich habe ich es gelöst mit screen:

Trennen Sie es im Bildschirmmodus mit CtrlAD. Dann können Sie das SSH-Fenster schließen.

Huei
quelle
5

Keine Verwendung: Mit dem ersten der folgenden Befehle wird das Programm abcd im Hintergrund so gestartet, dass es durch das anschließende Abmelden nicht gestoppt wird.

$ nohup abcd &

$ exit

Ashildr
quelle