我需要向SSH会话中在前台运行的远程进程发送SIGINT。
SSH会话已经建立,所以我不能使用启动它的选项(如如何通过SSH将SIGINT发送到远程进程中所述)。
ssh -t user@host
Run Code Online (Sandbox Code Playgroud)
我知道我可以打开第二个ssh会话并终止进程或关闭当前的ssh会话,但是我想避免这种情况并直接抛出当前的会话(如果可能的话)。
如果您使用ssh在远程系统上启动没有PTY的进程,那么据我所知,无法通过该ssh会话向远程进程发出信号。
SSH协议具有一条消息,用于向远程进程发送信号。但是,您可能将OpenSSH用于客户端或服务器,或同时用于两者,并且OpenSSH不会实现信号消息。因此,OpenSSH客户端无法发送消息,并且OpenSSH服务器也不会对此进行操作。
有一个SSH扩展发送“中断”的消息,其是通过OpenSSH的支持。在交互式会话中,OpenSSH客户端具有转义序列,您可以键入该转义序列以向服务器发送中断。OpenSSH服务器通过将中断发送给远程会话的PTY来处理中断消息,而Unix PTY通常会将中断视为SIGINT。但是,中断从根本上讲是TTY的概念,对于没有PTY的远程会话,这都不起作用。