Linux 下发送 SIGKILL 不能关闭进程的情况应该怎么解决?

2022-04-20 03:46:37 +08:00
 LeeReamond

调试时自己写了一些捕捉 signal 的代码,程序开起来以后发现关不掉了,把对应的 shell 窗口关了无法结束进程,在 htop 里手动发送 SIGKILL 或其他信号也无反应,这种情况应该怎么处理?

1491 次点击
所在节点    问与答
10 条回复
aleisterw
2022-04-20 03:48:53 +08:00
sudo kill -KILL
GuuJiang
2022-04-20 07:28:09 +08:00
SIGTERM
feather12315
2022-04-20 08:59:05 +08:00
只有一种办法:写个 module 自己处理掉
cubecube
2022-04-20 09:08:04 +08:00
-9 强杀呗。
处理程序不对,可能有非 deamon 线程
FullBridgeRect
2022-04-20 10:56:16 +08:00
sigkill 搞不掉大概是什么系统调用卡住了
lance86
2022-04-20 11:03:31 +08:00
题外话:SIGKILL 在程序里没法被捕获的。用 SIGTERM 吧,可以被监听到。
至于为啥 SIGKILL 都没反应,这个没有思路。
bootvue
2022-04-20 11:04:59 +08:00
薅电源
weyou
2022-04-20 11:44:31 +08:00
连 SIGKILL 都搞不定只能重启了。一般是阻塞在了不可中断的内核调用里了,比如某些 I/O 调用。
nightwitch
2022-04-20 14:54:34 +08:00
信号是要程序从内核态返回用户态的时候被处理的。
sigkill 都杀不掉的话说明卡死在内核态了
建议直接重启
ClericPy
2022-04-20 15:03:33 +08:00
1. htop 里 K 9 干不掉, 多数情况是权限不够, 在命令行手敲命令看看是不是报了权限不足, 必要时候 sudo

2. 还有一种情况是进程有守护, 所以要看一下进程 ID 有没有变化

3. SIGKILL 程序是不能捕获的, 常识性问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848034

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX