2016-11-02 33 views
2

當我打印的過程中,我得到:用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 

任何想法爲什麼?

回答

3

你的wc過程是第三個。所以在這兩種情況下計數都是正確的,一切都按預期工作。管道進程在命中後立即開始,而不是在ps完成並吐出輸出後開始。

如果您不希望發生這種情況,您可以使用臨時文件。

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

會再次產生兩個。

+0

謝謝,這就是我所懷疑的,但我對bash命令和管道系統非常陌生。 –