如何在 Windows 10 上运行的 Ubuntu VM 上停止不可终止的进程?

如何在 Windows 10 上运行的 Ubuntu VM 上停止不可终止的进程?

在 Windows 10 上,我有一个运行着 Ubuntu 20.04.5 的 Oracle VM VirtualBox,有时某个应用程序(以 启动sudo)会“挂起”。我无法使用

kill -9 <process_id>

因为这个kill过程也会挂起。

有没有其他方法可以停止这样的过程而无需强制停止虚拟机?

输出自ps -ef

root        3207    3166  0 10:26 pts/1    00:00:00 sudo ./isp_cli 79 sjb50_bootloader_secondary_v0.1.0m_kja
root        3208    3207  0 10:26 pts/1    00:00:00 ./isp_cli 79 sjb50_bootloader_secondary_v0.1.0m_kjar_190

命令ps -Al显示

4 S     0    1811    1714  0  80   0 -  5142 -      pts/0    00:00:00 sudo
4 D     0    1812    1811  0  80   0 -  1634 -      pts/0    00:00:00 isp_cli

它是一个通过 USB <-> CAN 与某些硬件设备进行通信的应用程序。对于某些测试(中断某些通信过程),它总是会在第二次运行时失败。在每种情况下重新启动 VM 都会变得非常麻烦。

我也尝试过使用

sudo pkill -9 -f isp_cli
sudo killall -9 isp_cli
sudo kill -hup 1811
sudo kill -15 1811

但这些命令也无法停止实际的阻止过程,并且也会挂起。

我进一步尝试获取有关该过程的更多信息,但即使我尝试

sudo cat /proc/1916/stack

这也挂了。没有输出,没有返回到终端。

答案1

D状态表示该过程处于 不间断睡眠 这个名字确实意义重大。

您可以尝试帖子中的解决方案 无法杀死/无法停止的普通用户进程,如何强制控制它?
我复制如下 水瓶座力量的回答

我可以使用以下命令避免重新启动:

sudo cgcreate -g cpu:/cpulimited
sudo cgclassify -g cpu:cpulimited 2315444 #the `find` pid
cd /sys/fs/cgroup/cpu/cpulimited
echo 1000000 |sudo tee cpu.cfs_period_us
echo 1000 |sudo tee cpu.cfs_quota_us #cant be less than 1000 as I tested

阅读 cpu.cfs_quota_us 的完整解释 这里, 由此提示

cgroup 魔法对这种无法终止的进程起作用!

相关内容