当前位置:  开发笔记 > 后端 > 正文

如何阻止Linux上的"不间断"进程?

如何解决《如何阻止Linux上的"不间断"进程?》经验,为你挑选了4个好方法。

我有一个VirtualBox进程,我试图杀死它(-KILL/-ABORT),但没有成功.父pid是1(init).

top显示D记录为"不间断睡眠"的过程.

strace 没有表现出来.

我怎么能摆脱这个?它阻止我卸载vbox内核驱动程序以加载更新的驱动程序.



1> jpalecek..:

简单回答:你做不到.

更长的答案:不间断的睡眠意味着这个过程不会被信号唤醒.它只能被它所等待的东西唤醒.当我遇到这种情况时,例如.使用CD-ROM,我通常使用suspend-to-disk重新启动计算机并恢复.


好吧,我有不间断的睡眠过程,我怎么能找到它等待的东西?对于什么过程,谁真的阻止了磁盘IO?

2> 小智..:

杀死一个不间断的过程成功,它不会立即这样做.在实际接收信号之前,该过程不会消失.所以单独发送信号不足以摆脱这个过程,你也必须从不间断的睡眠中唤醒它.

Tanel Poder写了一篇很好的指南来分析D状态过程.这种状态通常是由不完整的I/O引起的,例如网络故障.slm已经向超级用户发布了一些非常有用的指针,指出如何解除网络I/O,以及问题本身.

就个人而言,当在VirtualBox上处理Windows时,甚至在使用wine时,我经常遇到这个问题,因为cdrom I/O永远不会完成(我想它的某种光盘存在检查).ATA设备可以重置,这可能会解开该过程.例如,我正在使用以下小脚本来重置我的光驱,取消对它们阻塞的进程的干扰:

echo 1 > /sys/block/sr0/delete
echo 1 > /sys/block/sr1/delete
echo "- - -" > /sys/class/scsi_host/host7/scan



3> 小智..:

D状态基本上意味着进程正在等待磁盘I/O或其他无法中断的块I/O. 有时这意味着内核或设备正在疯狂地尝试读取坏块(特别是来自光盘).有时它意味着还有别的东西.

直到它离开D状态才能杀死该过程.找出它正在等待和解决的问题.简单的方法是重启.有时删除有问题的磁盘会有所帮助,但这可能相当危险:如果你不知道自己在做什么,那就是无法修复的灾难性硬件故障(读:冒出来了).



4> Sarkom..:

我最近在D远程服务器上遇到了一个处于运行状态的进程,并想澄清一下硬重启或关机后再打开电源才能删除该进程。

在用尽所有其他选项之前,请勿尝试软重启。例如,您可以尝试释放进程挂起的所有资源。软重启可能会使您的系统部分关闭,并且不再响应ssh,但是由于试图终止不间断进程而挂起,因此无法重启。

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有