答案1
这个假设是不正确的。这些组合键由终端(模拟器)而不是 shell 解释。外壳看不到它们。
您可以使用 停止前台进程^Z
,然后执行kill -KILL %%
。您可能可以通过键绑定来完成第二部分。
答案2
发送 SIGINT/SIGQUIT/SIGTSTP 的不是终端模拟器,而是内核中的终端或伪终端设备驱动程序。
假设它被配置为stty intr '^C'
,例如,当通过串行连接从终端或从伪终端的主端的终端仿真器接收到^C
字符(字节)时,内核将 SIGINT 信号发送到进程中的所有进程。0x3
前台进程组tty 设备的(并且它是您的交互式 shell 决定在任何给定时间哪个是前台进程组)。
在 Linux 上,至少没有等效的终端驱动程序 (termios) 设置来将字符映射到发送到前台进程组的 SIGKILL 信号。
终端仿真xterm
器可以配置为发送一些信号,包括 SIGKILL 以及send-signal(kill)
对某些 X11 事件(例如 KeyPress 事件)的操作
xterm -xrm 'XTerm.VT100.translations: #override Ctrl <Key>k: send-signal(kill)'
例如,将启动一个在+xterm
上发送 SIGKILL 的程序。Ctrlk
在使用 + MouseButton1 获得的默认菜单中Ctrl,您可以对条目执行相同的操作Send KILL Signal
。
但是,它会将其发送到通常为运行 shell 而自己创建的进程组,而不是从属终端设备的前台进程组。所以它可能不会做你想做的事。
即使您找到了一种让终端模拟器向前台进程组发送 SIGKILL 的方法,首先,如果进程作为不同的 uid 运行,它也无法执行此操作,而且它也不会执行您想要的操作,例如您在其中启动了一个ssh
// script
...screen
会话,因为它随后需要将信号发送到前台进程组他们的终端设备。
答案3
如果您使用的是 GUI 终端仿真器,它很可能可以发送 SIGKILL,只需查看其菜单即可。我使用 Konsole,在“编辑”菜单中,有一个“发送信号”子菜单,我可以在其中发送 SIGKILL 等信号。