杀死无响应的进程

杀死无响应的进程

根据top,名为 processpccardd的 CPU 负载接近 100%:

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                                    
  530 root      20   0     0    0    0 R  96.6  0.0  62:01.52 pccardd    

根据ps,进程运行状态:

root@T60:~# ps -o pid,ppid,command,state,uid,pcpu -p 530
  PID  PPID COMMAND                     S   UID %CPU
  530     2 [pccardd]                   R     0  0.2
root@T60:~# 

如果我尝试杀死pccarddwithSIGTERMSIGKILL信号,那么什么也不会发生。我知道这kill -9可能不会立即起作用,但我已经等了一个多小时了。进程是否有可能pccardd执行一些系统调用,从而导致SIGKILL信号被阻塞?我试图用 来确保这一点strace,但我不能:

root@T60:~# strace -p 530
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
root@T60:~# 

有没有办法终止这个pccardd进程或者我被迫重新启动机器?

答案1

进程收到 SIGKILL 并仍然保留的唯一方法是:

  1. 该进程处于不可中断睡眠状态(表示为D)。
  2. 该进程是僵尸进程(表示为Z)。
  3. 这是一个内核进程。

[]输出中进程名称周围的方括号 ( )ps表示 #3,它是一个内核进程。

所以你杀不了它。你也不能使用strace内核。

您可能拥有的唯一可能的解决方案是删除与此进程关联的模块。但是我不知道那个模块是什么。我还会检查dmesg相关消息,并在网上搜索错误。

相关内容