在 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 魔法对这种无法终止的进程起作用!