wc가 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가 말할 것입니다.

답변1

추가 라인은 실행 중인 wc 프로그램입니다. ps 이후가 아닌 동시에 실행됩니다.

답변2

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전혀 관련이 없습니다.

관련 정보