Wenn mv
gestartet wurde als:
ssh host mv x y
Dann mv
wird eine SIGPIPE (und die) erhalten , wenn sie versucht , etwas zu stdout oder stderr zu schreiben (wie eine Fehlermeldung).
Wenn Sie eine interaktive Sitzung gestartet haben wie:
ssh host
Und mv
von der interaktiven Shell dort gestartet , wenn die Masterseite des Pseudo-Terminals, von dem aus gestartet wurde sshd
, geschlossen wird (beim ssh
Schließen der TCP-Verbindung beim Beenden), der Leiter der Sitzung, der der Slave-Seite des Pseudo-Terminals zugeordnet ist ist die interaktive Remote-Shell, die ein SIGHUP-Signal empfängt (auflegen).
Nach dem Empfang dieses Signals trap '' HUP
leiten Shells (sofern Sie kein a ausgegeben haben ) dieses Signal normalerweise an alle Prozesse in den Jobs weiter, die sie gestartet haben, es sei denn, Sie haben ausdrücklich angegeben, dass dies nicht der Fall ist (wie bei disown
oder mit &|
in einigen Shells).
Andere Prozesse (wie mv
) sterben normalerweise ab, wenn sie dieses Signal empfangen, es sei denn, sie wurden angewiesen, es zu ignorieren (indem sie es verwenden nohup
oder wenn ihre Eltern es ignoriert haben).
Wenn Sie Folgendes ausgegeben haben:
trap '' HUP
Dann werden alle Jobs gestartet, nachdem sie es geerbt haben und SIGHUP ignorieren.
Die Shell stirbt nicht an dem SIGHUP-Signal, das beim Trennen gesendet wird, sondern wird bei der nächsten Eingabeaufforderung beendet, da der Standard weg ist. Beim Beenden senden einige Shells SIGHUP an ihre (nicht abgelehnten) Jobs. Diejenigen, die nach dem beginnen, trap '' HUP
werden es ignorieren, die anderen werden sterben.
Kurz gesagt, in diesem Fall mv
stirbt Ihr Wille , es sei denn, Sie haben zuvor Vorsichtsmaßnahmen getroffen, damit dies nicht geschieht .
Um es beim nächsten Mal zu vermeiden, bei Verwendung tcsh
, zsh
oder bash
, bevor Sie das Gerät herunterzufahren, drücken Sie Ctrl-Zzu suspendieren mv
, geben Sie bg
es im Hintergrund fortzusetzen und enteignen es.disown
Oder Sie könnten screen
oder verwenden tmux
. Bei einem SIGHUP werden diese nur von ihrem jetzt verschwundenen Host-Terminal getrennt, aber die Anwendungen, die auf dem emulierten Terminal ausgeführt werden, werden weiterhin kopflos ausgeführt, und Sie können die Sitzung später erneut an ein anderes Terminal anschließen, um zu sehen, wie es gelaufen ist mv
.
Oder verwenden Sie nohup mv
, um mv
gegen SIGHUP immun zu werden und die Ausgabe und Fehler in eine nohup.out
Datei zu verschieben, die Sie später überprüfen können.
Jetzt weiß ich nichts über Ihren spezifischen Hosting-Anbieter, aber bei einigen, wenn Sie sich ssh
in der Instanz befinden, starten Sie dort keine Shell-Sitzungen, sondern verbinden sich mit der Konsole, dh mit einer Sitzung, die bereits gestartet wurde und wenn Sie beenden, beenden Sie diese Sitzung nicht, sondern trennen Sie sie einfach von ihr. Die Shell wird also weder getötet noch getötet mv
. Wenn dies der Fall ist, werden Sie feststellen, dass Sie ps
von dort aus pid
in zwei getrennten ssh
Sitzungen dasselbe für Ihre Shell erhalten .