что происходит с процессом, когда его родительский процесс sshd завершается? - PullRequest
3 голосов
/ 01 ноября 2011

Если я запускаю оболочку на host1 и я ssh host2 some-command, то я закрываю окно терминала (или иным образом уничтожаю процесс ssh на host1), кажется, что процесс sshd на host2 заканчивается довольно быстро. Но ... что происходит с some-command? В зависимости от того, какая это команда, она иногда завершается, но иногда нет. Какие сигналы получает some-command? Какими файловыми дескрипторами (если они есть) манипулируют и как?

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Не получает никаких сигналов.Если они не были перенаправлены каким-либо образом, три стандартных потока ввода-вывода были каналами в / из процесса ssh, поэтому чтение из stdin вернет EOF, а запись в stdout или stderr завершится ошибкой и вызовет SIGPIPE.Если какая-то команда не выполняет ввод-вывод в стандартных потоках, у нее не будет причин преждевременного завершения.

0 голосов
/ 01 ноября 2011

Если у вас есть dtrace на вашем компьютере, вы можете проверить его с помощью команды

dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }'

из здесь .Также см. this .

У меня сейчас нет dtrace на моей машине с Linux.Но я могу проверить это позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...