如果我在
host1
上运行shell,并执行ssh host2 some-command
,然后关闭终端窗口(或以其他方式杀死host1
上的ssh
进程),似乎host2
上的sshd
进程很快就会终止。但是...some-command
会发生什么?根据命令的不同,它有时会终止,但有时不会。some-command
会接收到哪些信号?哪些文件描述符(如果有)会被操作?
ssh
可能会创建一个终端,也可能是伪终端(取决于选项),如果它这样做了,我会期望其他进程,对于该终端是控制终端的进程,会收到SIGHUP
信号。 - Ben Voigtssh somehost some-command
不会分配pty!它只是创建一个管道。您必须使用-t
请求pty。因此,我看到的行为导致我提出这个问题(我的作业没有接收到任何信号,只是关闭了它们的标准输入)是有道理的。 - Glyph