grep 명령 사용과 관련하여 두 가지 간단한 질문이 있습니다.
내가 하고 싶은 일은:
- 목록을 만드는 데 사용한 명령 외에 내가 실행 중인 총 라인(프로세스) 수를 표시합니다.
- 다음으로, 내가 실행 중인 전체 행 목록을 수정하고 userID와 PID만 새 목록으로 확인하고 싶습니다.
첫 번째는 ps -ef | grep myusername | grep -v "somecommand" | wc -l
() 같은 것만으로도 충분할 것 같은데, 목록을 생성하는 데 사용되는 명령을 편집하는 프로세스에서 무엇을 입력해야 할지 모르겠습니다.
두 번째 질문은 어떻게 처리해야 할지 모르겠습니다.
답변1
사용자의 모든 프로세스를 나열하려면(목록을 만드는 데 사용한 명령 외에) 다음을 사용할 수 있습니다.
ps -U username -u username u | grep -v ps
시작된 모든 프로세스를 username
실제 사용자 ID 및 유효 사용자 ID로 나열하고 ps
목록을 생성하는 데 사용된 명령을 나열하지 않도록 프로세스를 필터링합니다.
또 다른 것(사용자 및 PID):
ps -U username -u username u | grep -v ps | awk {'print $1, $2'}
awk
결과의 1열과 2열만 표시하는 데 사용됩니다.
답변2
첫 번째 질문의 경우 ps
다음 옵션을 사용하여 사용자 이름으로 실행 중인 모든 프로세스를 나열할 수 있습니다.
$ ps -o pid,uid -u 1000|wc -l
1000
이 값을 사용자의 UID로 바꿀 수 있습니다 . 표시하기 위해 pid
및 만 추가했습니다 uid
. 원하는 것은 무엇이든 추가할 수 있습니다.
두 번째 경우도 첫 번째 경우와 동일
$ ps -o pid,uid -u 1000 > process.list
답변3
첫 번째 질문의 경우 일치 항목 수를 제공하는 grep의 -c 명령을 사용할 수 있습니다.
ps -ef | grep -v "grep" | grep -c "username"
이는 모든 프로세스를 나열한 다음 grep 자체를 제거하고(목록을 가져오는 데 사용한 프로세스는 계산하지 않음) 사용자 이름에서 총 개수를 가져옵니다.