如何在bash中将键绑定到sigkill?

Dan*_*aft 9 linux bash sigkill

我正在开发我的应用程序(在Linux上),遗憾的是它有时会挂起.我可以Ctrl+C用来发送sigint,但我的程序忽略了sigint,因为它太过分了.所以我必须做过程杀死舞蹈:

Ctrl+Z
$ ps aux | grep process_name
$ kill -9 pid
Run Code Online (Sandbox Code Playgroud)

有没有办法配置bash在我按下时将kill信号发送到当前进程 - 比如说Ctrl+Shift+C

cam*_*amh 6

我认为没有任何密钥可用于发送SIGKILL.

SIGQUIT会改为做吗?如果你没有抓住它,默认是核心转储进程.默认情况下,这是^ \.你可以通过运行来看到这个:

$ stty -a
Run Code Online (Sandbox Code Playgroud)

在一个终端.它应该说:

quit = ^\
Run Code Online (Sandbox Code Playgroud)


Has*_*kun 5

您可以通过按 ^\ 向当前前台进程发送 SIGQUIT 信号(默认情况下,您可以运行stty -a以查看 的当前值quit。)

您还可以通过运行从 shell 杀死最后一个后台进程

$ kill %%
Run Code Online (Sandbox Code Playgroud)


Vin*_*vic 2

鉴于 SIGKILL 没有绑定键,如果 SIGQUIT 不能为您解决问题,您可以创建一个别名来节省一些输入。首先,

Ctrl+Z
$ ps aux | grep process_name
$ kill -9 pid
Run Code Online (Sandbox Code Playgroud)

dance 可以总结为(如果您想要终止的进程只有一个实例):

Ctrl+Z
$ pkill -9 process_name
Run Code Online (Sandbox Code Playgroud)

如果您的用例总是先挂起然后终止,您可以创建一个别名来终止最后运行的进程,例如

$alias pks="pkill -9 !!:0"
Run Code Online (Sandbox Code Playgroud)

在 ~/.bash_profile 中添加该别名。

  • 在 Linux 上,killall process_name 将杀死具有该名称的所有进程。注意:Solaris 和其他 UNIX 上的killall 会终止所有进程。 (2认同)