现在这很奇怪。我试图通过使用它来杀死一个进程pid
,但它根本不起作用。
root@machineA:/home/david# ps aux | grep modelling
david 5075 0.0 0.0 1285420 29404 ? Dl 21:05 0:01 /opt/modelling/bin/http
root 8730 0.0 0.0 8096 936 pts/4 S+ 22:43 0:00 grep --color=auto modelling
以下是我终止该过程的方式。
root@machineA:/home/david# kill -9 5075
然后如果我再做ps
一次。我可以再次看到相同的结果。
root@machineA:/home/david# ps aux | grep modelling
david 5075 0.0 0.0 1285420 29404 ? Dl 21:05 0:01 /opt/modelling/bin/http
root 9062 0.0 0.0 8100 936 pts/4 S+ 22:44 0:00 grep --color=auto modelling
有谁知道发生了什么事?这早些时候工作正常,几个小时前就开始发生,我不确定出了什么问题?
更新:-
我做了顶部,它显示为D
而Z
不是uninterruptible sleep
5075 david 20 0 1255m 28m 13m D 0 0.0 0:01.09 http
答案1
要删除D State
进程,因为它是不可中断的,只有重新启动机器才能解决问题如果系统没有自动处理它。
D State
通常,进程长时间停留的可能性很小。如果确实如此,则系统中存在未正确处理的问题。这也可能是一个潜在的错误。
D State
下面是 OpenVZ 中有关进程的内容的摘录。
发生 D 状态则进程处于不间断睡眠状态。这种状态很糟糕,因为您无法对处于 D 状态的进程执行任何操作。幸运的是,进程通常不会保持这种状态太久。但如果你有一堆 D 状态进程,那么系统中的某些逻辑就会被破坏。如果发生这种情况,非常重要的是确定这种不幸的睡眠发生在哪里。使用带有 l 选项的 ps 命令很容易做到。 WCHAN 列显示进程正在休眠的内核函数的名称:
# ps axl | awk '$10 ~ /D/'
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
vass 13478 7.2 0.0 1732 624 pts/1 D+ 17:36 0:00 find ./