-g 옵션을 사용하여 모든 프로세스를 나열하면 다음과 같은 결과가 나옵니다.
ps -g -o pid,pgid,ppid
PID PGID PPID
112140 112140 112139
127467 127467 127466
130547 130547 112140
130551 130547 130547
130557 130557 127467
...
ps -g 130547
130547 및 130551을 예상했지만 아무것도 표시되지 않습니다. "ps -s"와 동일합니다. 왜? 같은 그룹(트리)에 속한 프로세스를 표시하는 방법이 있나요?
답변1
Linux에서는 ps -g
다음을 통해 프로세스를 선택하세요.그룹또는 통해회의, 하지만 그렇지는 않습니다.프로세스 그룹. 매개변수가 숫자로만 구성된 경우 세션 ID로 처리하고, 그렇지 않으면 그룹 이름으로 처리합니다.
ps -g 130547
세션에서 ID가 130547인 모든 프로세스를 나열합니다. 아마도 프로세스 130547은 세션 리더가 아니므로 세션 ID 130547을 가진 프로세스가 없습니다.
Linux ps에는 프로세스 그룹별로 필터링하는 옵션이 없습니다. 특정 세션의 모든 프로세스 또는 모든 프로세스를 나열하고 필드별로 필터링할 수 있습니다 pgid
.
ps -g $(ps -p 130547 -o sid=) -o pid,ppid,pgid
ps -e -o pid,ppid,pgid | awk 'NR == 1 || $3 == 130547'