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

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

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

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

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

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

  • sshfs «Сброс соединения с помощью одноранговой сети» с идентификационным файлом
  • Зачем мне нужно вводить кодовую фразу для ключа RSA на удаленном хосте после SSH?
  • Двойная переадресация портов - SSH
  • Без пароля ssh на archlinux (после того, как ssh-copy-id все еще запрашивает пароль)
  • Как я могу отключить сеансы SSH?
  • ssh удаляет удаленную команду с псевдотерминалом
  • Удаленный запуск LXDE через SSH
  • Запустить X на сервере через 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 .

    Interesting Posts

    SSH Cert Auth Synology / Ubuntu

    Можно ли использовать маршрутизатор с dd-wrt / openWrt / etc в качестве радар-детектора?

    dhclient выходы со статусом 0, но все равно нет адреса

    EBtables не работает

    sed extract с несколькими вариантами в конце рисунка

    Почему я могу быть уверен, что GNU Parted не испортил ни одного бита после сокращения моего раздела?

    Невозможно загрузить из массива RAID – массивы, не собранные при загрузке

    создание переменной и присвоение значения переменной

    Определите, на каком устройстве находится каталог.

    Запрос ARP с неправильным IP-адресом

    Разрешить пользователю читать домашние каталоги других пользователей

    Есть ли недостатки в использовании mount -bind в качестве замены символических ссылок?

    Сценарий оболочки для автоматического исключения и отключения приложения на основе системного времени

    Программа Strace Hello World

    GRUB2 видит загрузчик Windows 10, если окна были установлены после GRUB в GPT / EFI?

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