Grep 명령 사용

Grep 명령 사용

grep 명령 사용과 관련하여 두 가지 간단한 질문이 있습니다.

내가 하고 싶은 일은:

  1. 목록을 만드는 데 사용한 명령 외에 내가 실행 중인 총 라인(프로세스) 수를 표시합니다.
  2. 다음으로, 내가 실행 중인 전체 행 목록을 수정하고 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 자체를 제거하고(목록을 가져오는 데 사용한 프로세스는 계산하지 않음) 사용자 이름에서 총 개수를 가져옵니다.

관련 정보