Я запускаю команду нижче та відслідковую вихідний файл в іншій системі:
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, не для того, щоб це було типовим.
Я переглянув сторінки man для ssh та sshd, але не помітив нічого очевидного, і Google вказує мені на вказівки щодо вмикання такої поведінки, а не для її вимкнення.
У мене працює Red Hat Enterprise Linux 6.2, з кореневим входом та оболонкою bash в обох системах.
-tt
замість того, щоб,-t
якщо сам ssh не виділив tty. SSH не отримає виділений tty, якщо ssh буде фоновим одразу після виклику через параметри типу-f
або-n
.