如何杀死 ubuntu 上不会死的进程?

如何杀死 ubuntu 上不会死的进程?

我试图终止这个似乎陷入循环的进程:

> ps auxww | grep -E '^USER|bash'
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ubuntu     61505 99.7  0.0   8596   304 ?        R    Sep27 812:45 bash redacted

尽管返回退出代码 0,但没有任何效果:

  • kill 61505sudo kill 61505
  • kill -KILL 61505sudo kill -KILL 61505
  • kill -9 61505sudo kill -9 61505
  • kill -TERM 61505sudo kill -TERM 61505
  • cpulimit --pid=61505 -l 1 -ksudo cpulimit --pid=61505 -l 1 -k

没有效果的意思是:

  • STATR
  • TIME继续增加
  • sudo cat /proc/61505/stack继续改变

我查了一下STAT值的R含义,它是:

R 正在运行或可运行(在运行队列中)


调试评论的输出:

>  sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] 0x0

>  sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] function_trace+0x98/0x98
[<0>] do_translation_fault+0x64/0x9c
[<0>] do_mem_abort+0x4c/0xbc
[<0>] el1_abort+0x74/0xf4
[<0>] el1_sync_handler+0xac/0xcc
[<0>] el1_sync+0x7c/0x100
[<0>] schedule_tail+0x130/0x200
[<0>] ret_from_fork+0x4/0x3c

>  sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] function_trace+0x98/0x98
[<0>] enter_from_kernel_mode+0x28/0x60

>  sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] fault_info+0x60/0x600

>  sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] fault_info+0x60/0x600

# a while later

> sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] el1_irq+0xd8/0x180
[<0>] handle_mm_fault+0xc8/0x294
[<0>] do_page_fault+0x14c/0x4e0
[<0>] do_translation_fault+0x64/0x9c
[<0>] do_mem_abort+0x4c/0xbc
[<0>] el1_abort+0x74/0xf4
[<0>] el1_sync_handler+0xac/0xcc
[<0>] el1_sync+0x7c/0x100
[<0>] schedule_tail+0x130/0x200
[<0>] ret_from_fork+0x4/0x3c

> sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] exit_to_kernel_mode+0x28/0x80

> sudo cat /proc/61505/stack
[<0>] __switch_to+0xb8/0xe4
[<0>] trace_hardirqs_off+0xd0/0x234
[<0>] el1_abort+0x84/0xf4
[<0>] el1_sync_handler+0xac/0xcc
[<0>] el1_sync+0x7c/0x100
[<0>] schedule_tail+0x130/0x200
[<0>] ret_from_fork+0x4/0x3c
> sudo cat /proc/61505/wchan
0

> sudo cat /proc/61505/wchan
0

> sudo cat /proc/61505/wchan
0

答案1

尝试以下基于帖子答案的代码
无法杀死/无法停止的普通用户进程,如何强制控制它?

sudo cgcreate -g cpu:/cpulimited
sudo cgclassify -g cpu:cpulimited 61505
cd /sys/fs/cgroup/cpu/cpulimited
echo 1000000 | sudo tee cpu.cfs_period_us
echo 1000 |sudo tee cpu.cfs_quota_us

如果该进程没有使用任何 CPU,这可能不起作用。

尝试pgrep -P 61505查找是否bash由于某些子进程而无法终止。

答案2

这个问题的答案一直就在你的面前。

重新启动计算机。

重新启动计算机将终止不会消失的进程,这是最好的解决方案,因为尝试“疏通”该进程可能会导致内核崩溃。

相关内容