V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

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

  •  
  •   LeeReamond · 2022-04-20 03:46:37 +08:00 · 1661 次点击
    这是一个创建于 950 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    3. SIGKILL 程序是不能捕获的, 常识性问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.