Was passiert mit der Behandlung von Ctrl+ C(SIGINT), wenn ich eine SSH-Sitzung starte, in der ein Befehl mit langer Laufzeit ausgeführt wird ?
Ich kann sehen, dass die SSH-Sitzung geschlossen ist, aber ich bin nicht sicher, wer zuerst den SIGINT erhält: Ist es ...
der ferngesteuerte Langzeitbefehl? Das heißt, (a) der Signal-Handler im Remote-Befehl wird aufgerufen und stoppt den Remote-Befehl. (b) die Shell, die den Befehl erzeugt hat, erkennt, dass der Befehl gestoppt wurde. (c) der Remote-SSHD erkennt, dass die Shell gestoppt wurde. so schließt es die Verbindung
oder
Der lokale SSH empfängt das Signal und beendet die Verbindung.
Ich denke, dass (1) passiert, aber ich möchte sicher gehen.
Ich bin mir auch nicht sicher, was in diesem Fall mit dem Shell-Handling von SIGINTs passiert. Zum Beispiel, wenn ich ...
ssh remote 'while true ; do sleep 1 ; date ; done'
und Ctrl+ C, dann wird die Fernverbindung getrennt. Gibt es eine Möglichkeit, den Remote-Befehl unter einer Shell auszuführen, die nach Ctrl+ am Leben bleibt C? Stoppen Sie in diesem Fall die Schleife und lassen Sie mich an der Remote-Shell weiterarbeiten.
ssh remote command
im Gegensatz zussh remote
) wird (auf der lokalen Seite) durch den SIGINT getötet, der durch Eingabe von Strg-C generiert wird. Die Remote-Seite wird wahrscheinlich (abhängig vom Betriebssystem) so lange ausgeführt, bis versucht wird, in den geschlossenen Socket zu lesen oder zu schreiben. Wenn Sie möchten, dass alle Tastenanschläge, einschließlich Strg-C, an die Fernbedienung weitergeleitet werden, verwenden Siessh remote
.