wc 및 ps를 사용하여 실행 중인 프로세스 수 계산

wc 및 ps를 사용하여 실행 중인 프로세스 수 계산

사용해 보았지만 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

관련 정보