Коли я запускаю сеанс SSH, який виконує тривалу команду, що відбувається з обробкою Ctrl+ C(SIGINT)?
Я бачу, що сеанс SSH закритий, але я не впевнений, хто першим отримує SIGINT: це ...
віддалену тривалу команду? тобто (a) обробник сигналу у віддаленій команді викликається і зупиняє віддалену команду; (b) оболонка, яка її породила, виявляє, що команда зупинилася, а також зупиняється (c) віддалений sshd виявляє, що оболонка зупинена, тому воно закриває з'єднання
або
локальний ssh приймає сигнал і закриває з'єднання.
Я думаю, що (1) відбувається, але хочу переконатися.
Я також не впевнений у тому, що в цьому випадку відбувається з обробкою оболонки SIGINT. Наприклад, якщо я ...
ssh remote 'while true ; do sleep 1 ; date ; done'
і Ctrl+ C, тоді віддалене з'єднання припиняється. Чи є спосіб запустити віддалену команду під оболонкою, яка залишиться живою після Ctrl+ C? Тобто в цьому випадку зупиніть цикл і дозвольте мені продовжувати працювати над віддаленою оболонкою?
ssh remote command
на відміну відssh remote
) буде убитий (з локальної сторони) SIGINT, сформованим шляхом введення ctrl-C. Віддалена сторона, ймовірно, (залежить від ОС) буде працювати, поки вона не спробує прочитати чи записати у закритий сокет. Якщо ви хочете, щоб усі ваші натискання клавіш, включаючи ctrl-C, передавались на віддалений, використовуйтеssh remote
.