내가 사용할 때'ps', 'egrep'그리고'화장실'프로세스 수를 계산하는 명령을 실행하면 잘못된 값이 표시됩니다. 명령을 실행하고 있어요"솔라리스 9"기계.
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND'
UID PID PPID C STIME TTY TIME CMD
root 16267 16171 0 Jan 28 ? 0:18 xyz
root 16269 16171 0 Jan 28 ? 0:07 abc
root 16268 16171 0 Jan 28 ? 0:07 ghi
MyServer $
출력에는 4줄(프로세스 3개 + 제목)만 표시됩니다. 하지만 아래 명령을 사용하면 다음과 같이 출력이 반환됩니다.5
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' | wc -l
5
반면에 출력을 파일에 에코하고 줄 수를 계산하면 완벽하게 작동합니다.
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' >temp && cat temp | wc -l
4
"egrep" 및 "egrep -v"와 관련된 추가 설명:
"-v" 옵션 없이 "egrep"이 작동하는 이유는 무엇입니까? 하지만 "-v"가 없다면?
MyServer$ ps -fu root | egrep '20755|13800'
root 20755 20751 0 12:14:29 pts/5 0:00 more -s /tmp/mpWGa4mO
root 1223 26407 0 12:57:28 pts/15 0:00 egrep 20755|13800
MyServer$ ps -fu root | egrep '20755|13800' | wc -l
2
MyServer$
MyServer$ ps -fu root | egrep -v 'usr|apps|sql|sh'
UID PID PPID C STIME TTY TIME CMD
root 3448 26407 0 12:57:42 pts/15 0:00 ps -fu root
root 20755 20751 0 12:14:29 pts/5 0:00 more -s /tmp/mpWGa4mO
MyServer$ ps -fu root | egrep -v 'usr|apps|sql|sh' | wc -l
4
MyServer$
답변1
wc -l
개행 문자 수를 계산합니다. 의미 있는 데이터가 포함된 줄보다 출력에 더 많은 줄 바꿈이 있을 수 있습니다.
예를 들어. 한 줄만 포함하고 개행 문자는 포함하지 않는 파일을 만듭니다.
$ cat > test.txt
hello # Type CTRL+D (2 times are necessary on my system)
$ wc -l < test.txt
0