我看到了一种非常奇怪的行为。
/proc/1154/cmdline
存在,并且kill -0 1154
成功,但是ps -ef | grep 1154
和ls /proc | grep 1154
不显示任何内容。
1154 是虚拟机重新启动时,处于关闭状态的 postgres 进程(或者日志中提到但可能没有被刷新)。
这怎么可能呢?
我看到了一种非常奇怪的行为。
/proc/1154/cmdline
存在,并且kill -0 1154
成功,但是ps -ef | grep 1154
和ls /proc | grep 1154
不显示任何内容。
1154 是虚拟机重新启动时,处于关闭状态的 postgres 进程(或者日志中提到但可能没有被刷新)。
这怎么可能呢?
您正在看到 Linux 线程工作方式的副作用。
线程是一个进程(因此它显示在中
/proc
),但默认情况下ps
不显示线程。您需要添加
-L
标志来显示线程。这样
ps -efL
就可以看到所有的线程和“隐藏”的进程。