Warum wird der auf der VM ausgelöste Prozess / Task angehalten, wenn die zum Erstellen des Prozesses verwendete SSH-Verbindung unterbrochen wurde?

324
Darshan L

Ich habe eine VM, die auf einem Remote-Host ausgeführt wird. Ich verbinde mich von meinem Desktop-PC über SSH über Putty. Ich starte einen Build-Prozess auf dieser VM.

Wenn ich nun die Putty-SSH-Sitzung schließe, wird der Erstellungsprozess angehalten und das Abbild wird nicht erstellt.

Wenn ich jedoch eine VNC-Serverinstanz auf der VM ausspreche und über den VNC-Viewer von meinem Desktop-PC aus mit ihr verbunden bin. Jetzt konnte ich auf die GUI-Umgebung der VM zugreifen. Jetzt starte ich ein Terminal. Und starte einen Build-Prozess.

Auch wenn ich nun den VNC-Client schließe oder meinen Desktop-PC herunterfahre, läuft der Build-Prozess immer noch.

Wie unterscheiden sie sich in jedem Szenario?

1

1 Antwort auf die Frage

2
davidbaumann

Warum wird der Prozess beendet? Wenn Sie eine Verbindung herstellen, wird Ihre Standard-Bash gestartet. Wenn Sie nun einen Prozess starten, sind sie Unterprozesse von bash. Wenn die Verbindung geschlossen wird, werden bash und alle seine Unterprozesse beendet.


Lösung: verwenden screen. Führen screenSie den Build-Prozess aus und starten Sie ihn. Wenn Sie die Verbindung trennen, wird alles nach dem Bildschirm fortgesetzt. Wenn Sie jetzt die Verbindung mit ssh wieder herstellen und ausführen screen -RD, kehren Sie zu Ihrer Sitzung zurück und sehen den Vorgang.


VNC überträgt nur den Bildschirm und die Steuerung der Maus / Tastatur an Ihr System. Alle Prozesse laufen so ab, als würden Sie vor diesem System sitzen.

VNC-Server können auf beide Arten arbeiten. Unter Linux haben sie häufig eigene Sitzungen (wie RDP unter Windows). Aber die Frage, glaube ich, war, warum "bash und all seine Unterprozesse" überhaupt mit SSH beendet werden. grawity vor 6 Jahren 0
@grawity Weil sie Unterprozesse des SSH-Kindes sind, das beendet wird? davidgo vor 6 Jahren 0