我有两个热键用于交互式查找和终止 Linux 上的进程:
bindsym $mod+k exec --no-startup-id \
"ps axo pid,cmd | sed 1d | dmenu -i -l 20 | awk '{print $1}' | xargs kill"
bindsym $mod+$sh+k exec --no-startup-id \
"ps axo pid,cmd | sed 1d | dmenu -i -l 20 | awk '{print $1}' | xargs -s SIGSEGV kill"
第二个热键是针对无响应目标的“更努力”版本。这里使用什么信号最合适?这似乎是一种滥用,SIGSEGV
因为没有潜在的分段错误。
信号(2)说
信号 SIGKILL 和 SIGSTOP 无法被捕获或忽略
SIGKILL
但根据我的经验,无响应的进程在死亡时存活下来是很常见的SIGSEGV
。
无情地终止进程的“最不错误”的方法是什么?
要无情地终止进程,请发送 SIGKILL(信号号 9)。该信号不能被进程忽略。就像拔掉插头一样:
终止进程的正确、更简洁的方法是发送 SIGTERM(信号号 15)。这允许进程在关闭之前执行一些内务处理。但是,它不会(总是)在无响应的进程上工作。
SIGSEGV 在这里不适用;它是操作系统发送给发生分段错误的进程的信号(SEGmentation Violation)。