Je déplace un répertoire vers un autre à l'aide de la commande mv.
Cependant, j'ai été obligé d'arrêter mon ordinateur, ce qui signifie perdre la connexion au serveur.
Qu'advient-il de la commande mv?
Remarque: Après m'être reconnecté, j'ai vu que tous les fichiers ont été correctement déplacés, même si j'étais sûr qu'ils n'avaient pas été déplacés lorsque j'ai fermé la connexion. Il semble que mv ait continué de fonctionner.
C'est moi ssh à centosh machine dans le serveur cloud steadfast.net.
screen
outmux
une fois connecté pour démarrer un terminal virtuel qui continuera à fonctionner lorsque vous vous déconnectez entre]Réponses:
Si a
mv
été démarré comme:Puis
mv
recevra un SIGPIPE (et mourra) s'il essaie d'écrire quoi que ce soit sur stdout ou stderr (comme un message d'erreur).Si vous avez commencé une session interactive comme:
Et a commencé à
mv
partir du shell interactif là-bas, lorsque le côté maître du pseudo-terminal démarré parsshd
sera fermé (à lassh
fermeture de la connexion TCP à la sortie), le chef de la session associée au côté esclave du pseudo-terminal, qui est le shell interactif distant, recevra un signal SIGHUP (raccrocher).À la réception de ce signal, les shells (sauf si vous en avez émis un
trap '' HUP
) transmettent généralement ce signal à tous les processus dans les tâches qu'ils ont démarrées, sauf si vous leur avez explicitement dit de ne pas le faire (comme avecdisown
ou avec&|
dans certains shells).D'autres processus (comme
mv
) mourront généralement lors de la réception de ce signal, sauf si on leur a dit de l'ignorer (en l'utilisantnohup
ou si leur parent l'a ignoré).Si vous avez émis un:
Ensuite, tous les travaux ont commencé après qu'il en héritera et ignorera SIGHUP.
Le shell ne mourra pas du signal SIGHUP envoyé lors de la déconnexion mais se fermera à l'invite suivante, car son stdin est parti. À la sortie, certains obus envoient SIGHUP à leurs emplois (non reniés). Ceux qui ont commencé après l'
trap '' HUP
ignoreront, les autres mourront.En bref, dans ce cas, à moins que vous n'ayez pris des précautions préalables pour que cela ne se produise pas, vous
mv
mourrez.Pour éviter cela la prochaine fois, si vous utilisez
tcsh
,zsh
oubash
, avant d'arrêter la machine, appuyez sur Ctrl-Zpour suspendremv
, entrezbg
pour la reprendre en arrière-plan etdisown
pour la désactiver .Ou vous pouvez utiliser
screen
outmux
. Lors d'un SIGHUP, ceux-ci se détacheront simplement de leur terminal hôte maintenant disparu, mais les applications exécutées dans le terminal qu'il émule continueront de fonctionner sans tête et vous pouvez rattacher la session à un autre terminal plus tard pour voir comment celamv
s'est passé.Ou utilisez-le
nohup mv
pour vousmv
immuniser contre SIGHUP et voir sa sortie et ses erreurs aller dans unnohup.out
fichier que vous pourrez vérifier plus tard.Maintenant, je ne connais pas votre fournisseur d'hébergement spécifique, mais avec certains, lorsque vous entrez
ssh
dans l'instance, vous ne démarrez pas de sessions shell là-bas, mais vous vous attachez plutôt à la console, c'est-à-dire à une session qui a déjà été démarrée et lorsque vous quittez, vous ne mettez pas fin à cette session, il vous suffit de vous en détacher. Ainsi, l'obus n'est pas tué, non plusmv
. Si tel est le cas, vous remarquerez que l'ps
exécution à partir de là vous donnera la même chosepid
pour votre shell sur deuxssh
sessions distinctes .la source