사용해 보았지만 ps r > log | wc log
이 반환됩니다 Ambiguous output redirect.
. 누군가 이유를 설명하고 다른 솔루션을 제공할 수 있습니까?
답변1
파이프 기호("|")는 한 프로그램의 출력을 다른 프로그램의 입력으로 리디렉션합니다.
wc
그러나 출력을 STDIN wc
(입력 파일과 함께 제공할 때 사용되지 않음 )으로 리디렉션하려는 동안 ">"를 사용하여 출력을 log라는 파일로 리디렉션할 수 있습니다 wc
.
따라서 다음 중 하나가 필요합니다. (팁: 추가 파일을 생성하지 않으므로 후자의 솔루션이 더 좋습니다.)
ps r > log ; wc log
또는
ps r|wc
wc
참고: 아마도 행 수를 계산 하고 싶을 것이므로 wc -l
이 경우에는 다음과 같습니다.
답변2
리디렉션과 파이프를 혼합하고 있습니다.
ps r > log # redirects ps output to a file called log (over writing any contents of log)
당신이 원하는 것은
ps r | wc # this connects the output of ps to the input of wc
귀하의 방법을 사용하려면 다음을 수행해야합니다
ps r > log; wc log
즉, ps
출력을 log라는 파일로 리디렉션한 다음 wc
해당 파일에서 명령을 실행합니다 log
.
답변3
이것을 사용하는 ps
것은 신뢰할 수 없습니다. 프로세스에 대한 인수에는 개행 문자가 포함될 수 있습니다. Linux에서 더 나은 대안은 /proc/loadavg
다음과 같이 사용하는 것입니다.
awk '{ gsub("[0-9]+/", "") ; print $4 }' /proc/loadavg