Я запускаю команду ниже и отслеживаю выходной файл в другой системе:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Если я убью команду ssh, используя ^C
или просто убив терминал, на котором я вошел, я бы также ожидал, что удаленная команда завершится. Однако этого не происходит: /tmp/count
получает все числа 1–5 независимо и ps -ejH
показывает, что оболочка и ее sleep
дочерний элемент продолжают работать.
Это ожидаемое поведение и задокументировано ли оно где-нибудь? Могу ли я отключить это? После прочтения я ожидал, что мне придется явно включить такое поведение с помощью nohup, а не по умолчанию.
Я просмотрел справочные страницы по ssh и sshd, но не заметил ничего очевидного, и Google указывает мне на инструкции по включению этого поведения, а не по его выключению.
Я использую Red Hat Enterprise Linux 6.2 с обоими учетными записями root и bash.
-tt
вместо,-t
если у самого ssh нет выделенного tty. SSH не получит выделенный tty, если ssh сразу после вызова вызывается с помощью опций, таких как-f
или-n
.