Jeśli mv
został uruchomiony jako:
ssh host mv x y
Następnie mv
otrzyma SIGPIPE (i umrze), jeśli spróbuje napisać cokolwiek na stdout lub stderr (np. Komunikat o błędzie).
Jeśli rozpocząłeś sesję interaktywną, taką jak:
ssh host
I zaczął się mv
od interaktywnej powłoki tam, kiedy strona główna pseudotermina uruchomiona przez sshd
zostanie zamknięta (po ssh
zamknięciu połączenia TCP przy wyjściu), lider sesji powiązany z niewolniczą stroną pseudo-terminala, który jest zdalną interaktywną powłoką, otrzyma sygnał SIGHUP (rozłącz się).
Po otrzymaniu tego sygnału, powłoki (chyba że wydałeś a trap '' HUP
) zazwyczaj przekazują ten sygnał do wszystkich procesów w zadaniach, które rozpoczęły, chyba że wyraźnie to powiedziałeś (nie z disown
lub &|
w niektórych powłokach).
Inne procesy (takie jak mv
) zazwyczaj umierają po otrzymaniu tego sygnału, chyba że otrzymają polecenie zignorowania go (przez użycie nohup
lub jeśli ich rodzic zignorował go).
Jeśli wydałeś:
trap '' HUP
Następnie wszystkie zadania rozpoczęte po nim odziedziczą go i zignorują SIGHUP.
Powłoka nie umrze z powodu sygnału SIGHUP wysłanego po rozłączeniu, ale opuści się przy następnym monicie, ponieważ jej standardowe wejście zniknęło. Po wyjściu niektóre pociski wysyłają SIGHUP do (nie odrzuconych) zadań. Ci, którzy zaczęli po tym trap '' HUP
, zignorują to, inni umrą.
Krótko mówiąc, w takim przypadku, jeśli nie podejmiesz wcześniejszych środków ostrożności, aby tak się nie stało, mv
umrzesz.
Aby tego uniknąć następnym razem, jeśli używasz tcsh
, zsh
lub bash
, przed wyłączeniem urządzenia, należy nacisnąć przycisk Ctrl-Z, aby wstrzymać mv
, wprowadź bg
wznowić ją w tle, i disown
aby wyprzeć go.
Lub możesz użyć screen
lub tmux
. Po SIGHUP, one po prostu odłączą się od swojego już nieistniejącego terminala hosta, ale aplikacje uruchomione w terminalu, który emuluje, będą nadal działać bezgłowo i możesz ponownie podłączyć sesję do innego terminala, aby zobaczyć, jak mv
poszło.
Lub użyj, nohup mv
aby mv
uodpornić się na SIGHUP, a jego wyjście i błędy trafią do nohup.out
pliku, który możesz sprawdzić później.
Teraz nie wiem o twoim konkretnym dostawcy hostingu, ale z niektórymi, gdy wchodzisz ssh
do instancji, nie zaczynasz tam sesji powłoki, ale raczej przyłączasz się do konsoli, czyli do sesji, która została już uruchomiona , a kiedy wychodzisz, nie kończysz tej sesji, po prostu odłącz się od niej. Więc skorupa nie zabija, ani nie mv
. W takim przypadku zauważysz, że ps
ucieczka stamtąd dałaby ci to samo pid
dla powłoki w dwóch oddzielnych ssh
sesjach.