Процесс bash на стороне сервера соединения выполняется с его управляющим терминалом, установленным на подчиненную сторону пары псевдотерминалов, а ведущая сторона подключена к процессу sshd
.
Когда соединение завершается, процесс sshd
закрывает главную сторону псевдотерминала, что приводит к тому, что драйвер псевдотерминала ядра вешает ведомую сторону псевдотерминала. Когда подчиненная сторона зависает, ядро tty ядра отправляет сигналы SIGHUP
и SIGCONT
руководителю сеанса терминала (обычно это процесс bash
) и каждому процессу в группе процессов руководителя сеанса.
Это не относится только к псевдотерминалам и ssh - то же самое происходит, если вы подключаетесь к серверу через модем, подключенный к последовательному порту, и модем зависает (именно здесь "зависает" / SIGHUP
присвоение имен происходит). Как вы можете сказать, это историческое поведение очень давно.