如何发送SIGINT通过SSH远程进程?(How to send SIGINT to a remot

2019-07-20 15:47发布

我有希望从父接收SIGINT一个远程计算机上运行的程序。 该方案需要接收信号才能正常工作。 不幸的是,如果我远程运行过程中通过SSH和发送SIGINT,ssh的过程本身陷阱和中断,而不是转发信号。

下面是使用GDB此行为的示例:

本地运行:

$ gdb
GNU gdb 6.3.50-20050815 (Apple version gdb-1344) (Fri Jul  3 01:19:56 UTC 2009)
...
This GDB was configured as "x86_64-apple-darwin".
^C
(gdb) Quit
^C
(gdb) Quit
^C
(gdb) Quit

远程运行:

$ ssh foo.bar.com gdb
GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh)
...
This GDB was configured as "i386-redhat-linux-gnu".
(gdb) ^C
Killed by signal 2.
$

任何人都可以提出解决这个问题的一种工作方式? 本地SSH客户端OpenSSH_5.2p1。

Answer 1:

$ ssh -t foo.bar.com gdb
...
(gdb) ^C
Quit


Answer 2:

尝试signal SIGINT在gdb提示。



Answer 3:

它看起来像你这样做CTRL + C。 问题是,你的终端窗口发送SIGINT到SSH进程在本地运行,而不是在远程系统上的过程。

你必须手动指定使用的信号kill在远程系统上的命令或系统调用。

以上使用便利killall

$killall -INT gdb


Answer 4:

您可以运行在远程机器上的终端和使用kill -INT给它发送信号?



文章来源: How to send SIGINT to a remote process over SSH?