Что произойдет с продолжением операции, если мы сделаем ssh, а затем отключим?

Я перемещаю один каталог в другой с помощью команды mv.

Тем не менее, я был вынужден отключить свой компьютер, что означает потерю связи с сервером.

Что случилось с командой mv?

Примечание. После переустановки я увидел, что все файлы были правильно перемещены, хотя я был уверен, что он не был перемещен, когда я закрыл соединение. Кажется, что mv продолжал работать.

Это машина ssh to centosh в облачном сервере steadfast.net.

  • Обратное подключение к серверу SSH
  • Как SSH через промежуточный сервер
  • optirun и ssh -X
  • Как настроить sshd_config, чтобы не принимать ключи dsa, которые настроены в публичной аутентификации?
  • Каким образом SFTP не основан на SSH?
  • Почему ssh -nq -t не может видеть переменную окружения?
  • Укажите имя пользователя при использовании vim с scp
  • Запустить команду на вход и выход ssh при завершении команды
  • One Solution collect form web for “Что произойдет с продолжением операции, если мы сделаем ssh, а затем отключим?”

    Если mv был запущен как:

     ssh host mv xy 

    Затем 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 чтобы возобновить его в фоновом режиме, и отменить его.

    Или вы можете использовать screen или tmux . После SIGHUP они будут просто отсоединяться от своего уже запущенного хост-терминала, но приложения, работающие на эмуляторе терминала, будут продолжать работать без головок, и вы можете снова подключить сеанс к другому терминалу, чтобы посмотреть, как mv пошел.

    Или используйте nohup mv чтобы сделать mv невосприимчивым к SIGHUP, и его вывод и ошибки попадают в файл nohup.out который вы можете проверить позже.

    Теперь я не знаю о вашем конкретном хостинг-провайдере, но с некоторыми, когда вы ssh в экземпляр, вы не запускаете сеансы оболочки там, а скорее присоединяетесь к консоли, то есть к сеансу, который был запущен уже, и когда вы выходите, вы не завершаете этот сеанс, просто отключайтесь от него. Итак, оболочка не убивает, а mv . Если это так, вы заметите, что запуск ps оттуда даст вам тот же pid для вашей оболочки через два отдельных сеанса ssh .

    Linux и Unix - лучшая ОС в мире.