Якщо mv
було розпочато так:
ssh host mv x y
Тоді mv
ви отримаєте SIGPIPE (і помре), якщо він спробує написати що-небудь до stdout або stderr (наприклад, повідомлення про помилку).
Якщо ви розпочали інтерактивний сеанс, наприклад:
ssh host
І почалося mv
з інтерактивної оболонки там, коли головна сторона запущеного псевдотерміналу sshd
буде закрита (після ssh
закриття TCP-з'єднання при виході), лідер сеансу, пов'язаний з веденою стороною псевдотерміналу, є віддаленою інтерактивною оболонкою, отримає сигнал SIGHUP (зависнути).
Після отримання цього сигналу снаряди (якщо ви не видали trap '' HUP
) зазвичай передають цей сигнал усім процесам у розпочатих завданнях, якщо ви прямо не сказали йому цього (як, наприклад, з disown
або &|
в деяких оболонках).
Інші процеси (як-от mv
), як правило, загинуть при отриманні цього сигналу, якщо їм не наказали ігнорувати його (використовуючи nohup
або якщо їх батько проігнорував).
Якщо ви видали:
trap '' HUP
Тоді всі завдання, розпочаті після того, як він успадкує його, і ігнорує SIGHUP.
Оболонка не загине від сигналу SIGHUP, що надсилається при відключенні, але вийде в наступний рядок, оскільки його stdin відсутній. Після виходу деякі снаряди відправляють SIGHUP на свої (не відкликані) завдання. Ті, що почалися після trap '' HUP
заповіту, ігнорують його, інші загинуть.
Коротше кажучи, у такому випадку, якщо ви не вжили попередніх заходів, щоб цього не сталося, ви mv
помрете.
Щоб уникнути цього в наступний раз, якщо використовується tcsh
, zsh
або bash
, перш ніж вимкнути машини, натисніть Ctrl-Zпризупинити mv
, введіть bg
відновити його в фоновому режимі, і disown
в відхрестився його.
Або ви могли використовувати screen
або tmux
. Після SIGHUP, вони просто відірвуться від вже відсутнього хост-терміналу, але програми, що працюють у терміналі, який він емулює, продовжуватимуть працювати без голови, і ви можете знову приєднати сеанс до іншого терміналу, щоб побачити, як mv
пройшло.
Або використовуйте nohup mv
для того, щоб зробити mv
імунітетом SIGHUP і отримати його вихід та помилки, перейдіть у nohup.out
файл, який ви можете перевірити пізніше.
Тепер я не знаю про вашого конкретного хостинг-провайдера, але з деякими, коли ви ssh
входите в екземпляр, ви не починаєте там сеанси оболонки, а скоріше приєднуєтесь до консолі, тобто до вже розпочатого сеансу. , і коли ви виходите, ви не припиняєте сеанс, а просто відхиляєтесь від нього. Отже, шкаралупа не вбиває, як і не mv
. Якщо це так, ви помітите, що ps
запуск звідти дає вам те саме pid
для вашої оболонки протягом двох окремих ssh
сеансів.