当父进程sshd进程终止时,进程会发生什么?

时间:2011-11-01 02:38:46

标签: linux ssh posix process openssh

如果我在host1上运行了一个shell并且ssh host2 some-command,那么我关闭终端窗口(或以其他方式终止ssh上的host1进程) sshd上的host2进程非常及时终止。但是...... some-command会发生什么?根据它的命令,它有时会终止,但有时不会。 some-command收到什么信号?操作了哪些文件描述符(如果有的话)以及如何操作?

2 个答案:

答案 0 :(得分:4)

它没有收到任何信号。如果它们没有以某种方式重定向,则三个标准IO流是进出ssh进程的管道,因此从stdin读取将返回EOF并且对stdout或stderr的写入将失败并引发SIGPIPE。如果some-command不对标准流进行I / O操作,则没有理由提前终止。

答案 1 :(得分:0)

如果您的计算机上有dtrace,则可以使用

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

命令。另请参阅this

我现在的Linux机器上没有dtrace。但我可以稍后再查看。