Ich verschiebe ein Verzeichnis mit dem Befehl mv in ein anderes.
Ich musste jedoch meinen Computer herunterfahren, was bedeutet, dass die Verbindung zum Server unterbrochen wurde.
Was passiert mit dem Befehl mv?
Hinweis: Nach dem erneuten Anmelden habe ich festgestellt, dass alle Dateien ordnungsgemäß verschoben wurden, obwohl ich sicher war, dass sie beim Schließen der Verbindung nicht verschoben wurden. Es scheint, dass mv weiter lief.
Dies ist mir SSH zu Centosh Maschine in Steadfast.net Cloud Server.
screen
odertmux
einmal loggued in ein virtuelles Terminal zu starten , die für den Betrieb wird fortgesetzt , wenn Sie trennen [dh Sie es später anzubringen und das Terminal im gleichen Zustand sehen , wie Sie es verlassen haben , sowie alle Updates in zwischen]Antworten:
Wenn
mv
gestartet wurde als: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:
Und
mv
von der interaktiven Shell dort gestartet , wenn die Masterseite des Pseudo-Terminals, von dem aus gestartet wurdesshd
, geschlossen wird (beimssh
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 beidisown
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 verwendennohup
oder wenn ihre Eltern es ignoriert haben).Wenn Sie Folgendes ausgegeben haben:
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
oderbash
, bevor Sie das Gerät herunterzufahren, drücken Sie Ctrl-Zzu suspendierenmv
, geben Siebg
es im Hintergrund fortzusetzen und enteignen es.disown
Oder Sie könnten
screen
oder verwendentmux
. 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 istmv
.Oder verwenden Sie
nohup mv
, ummv
gegen SIGHUP immun zu werden und die Ausgabe und Fehler in einenohup.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ötetmv
. Wenn dies der Fall ist, werden Sie feststellen, dass Sieps
von dort auspid
in zwei getrenntenssh
Sitzungen dasselbe für Ihre Shell erhalten .quelle