Ps
為什麼 wc 從 ps 的輸出中得到錯誤的結果
將所有行輸出到文件中
/tmp/ps.txt
$ ps -e >/tmp/ps.txt
用 wc -l 計算它
$ wc -l /tmp/ps.txt 172
在不導出文件的情況下計算它。
$ ps -e | wc -l 173
為什麼
ps -e | wc -l
要多出一條線?我認為ctrl-d對我的問題沒有正確的解釋。
$ echo "test" | wc -l 1
請在您的終端中嘗試它,它會產生 2 正如ctrl-d 所說的那樣。
ctrl-d 的答案是正確的。
您似乎沒有理解該
ps
命令的用途。它列出了您系統上的程序。當您執行該
ps
命令時,該正在執行的實例本身就是一個程序。當您執行
wc
命令時,這也是一個過程。如果您
cat
在管道中粘貼一些命令,那麼每個命令也是一個程序,每個命令都會導致ps
輸出多行資訊:[vagrant@localhost ~]$ ps | wc -l 4 [vagrant@localhost ~]$ ps | cat | wc -l 5 [vagrant@localhost ~]$ ps | cat | cat | wc -l 6 [vagrant@localhost ~]$ ps | wc -l 4 [vagrant@localhost ~]$ ps PID TTY TIME CMD 22912 pts/0 00:00:00 bash 29651 pts/0 00:00:00 ps [vagrant@localhost ~]$
顯示“1”的事實
echo "test" | wc -l
完全無關緊要。
額外的行是正在執行的 wc 程序。它與 ps 同時執行,而不是在那之後。