与 ps 的计数差异 |厕所

Difference in count with ps | wc

当我打印流程时,我得到:

$ ps --no-headers
12961 pts/0    00:00:00 bash
16676 pts/0    00:00:00 ps

所以,他们只是两个过程。但是,当我这样做时:

$ ps --no-headers | wc -l
3

知道为什么吗?

你的wc进程是第三个。因此,在这两种情况下计数都是正确的,并且一切都按预期进行。管道进程在按下回车键后立即启动,而不是在 ps 完成并吐出其输出之后。

如果您不希望这种情况发生,您可以使用一个临时文件。

ps --no-headers > /tmp/foo
wc -l /tmp/foo

会再次产生两个。