Korzystam z poniższego polecenia i monitoruję plik wyjściowy w innym systemie:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Jeśli zabiję komendę ssh za pomocą ^C
lub po prostu zabijając terminal, na którym jestem zalogowany, oczekiwałbym, że zdalne polecenie również się zakończy. Tak się jednak nie dzieje: /tmp/count
niezależnie pobiera wszystkie liczby 1–5 i ps -ejH
pokazuje, że powłoka i jej sleep
dziecko nadal działają.
Czy jest to oczekiwane zachowanie i czy jest gdziekolwiek udokumentowane? Czy mogę to wyłączyć? Po przeczytaniu, spodziewałem się, że będę musiał wyraźnie włączyć takie zachowanie bez nohup, nie żeby było to ustawienie domyślne.
Przejrzałem strony podręcznika dla ssh i sshd, ale nie zauważyłem niczego oczywistego, a Google wskazuje mi instrukcje dotyczące włączania tego zachowania, a nie wyłączania go.
Korzystam z systemu Red Hat Enterprise Linux 6.2 z loginem root i powłoką bash na obu systemach.
-tt
zamiast,-t
jeśli sam ssh nie ma przydzielonego tty. SSH nie otrzyma przydzielonego tty, jeśli ssh zostanie natychmiast uruchomione w tle po wywołaniu za pomocą opcji takich jak-f
lub-n
.