使用ps | wc命令统计数量的差异

3
当我打印进程时,我得到以下结果:
$ ps --no-headers
12961 pts/0    00:00:00 bash
16676 pts/0    00:00:00 ps

所以,只有两个进程。但是,当我执行以下操作时:
$ ps --no-headers | wc -l
3

有任何想法为什么会这样?
1个回答

4
你的wc进程是第三个。所以在这两种情况下计数都是正确的,一切都按预期工作。输入回车后,管道进程会立即启动,而不是等待ps进程完成并输出其输出结果。
如果你不想要这种情况发生,可以使用一个临时文件。
ps --no-headers > /tmp/foo
wc -l /tmp/foo

再次执行会产生两个。

谢谢,这正是我所怀疑的,但我对Bash命令和管道非常陌生。 - Yohan Obadia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接