특정 과정의 자녀가 누구인지 아는 방법이 있습니까? 예를 들어 부모 ID가 foo 인 어린이?
특정 과정의 자녀가 누구인지 아는 방법이 있습니까? 예를 들어 부모 ID가 foo 인 어린이?
답변:
pstree
명령을 찾고 있습니다.
pstree
그 자체로 모든 프로세스를 트리 형태로 나열합니다 lsblk
. -p
플래그를 사용하여 PID를 나열하고 -s
상위 프로세스도 표시 할 수 있습니다.
$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
|-{gdbus}(605)
|-{gmain}(603)
`-{probing-thread}(606)
자식 PID를 얻는 (아마도) POSIX 호환 방법 (다른 곳의 주석에서 언급 했음) :
ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'
이것은 ps
모든 프로세스의 부모 PID와 PID (제목 없음)를 쓴 다음 awk
첫 번째 필드 (부모 PID)에 주어진 PID가있는 행을 확인하고 해당하는 두 번째 필드 (자식 PID)를 인쇄하는 데 사용됩니다.
다른 옵션은 시스템 모니터 를 사용하는 것입니다 (사전 설치되어 제공됨). SM 메뉴 표시 줄에서 "보기"아래의 "종속성"옵션을 표시하여 아래 스크린 샷과 같이 부모 및 자식 프로세스를 보여주는 시각적 피드백을 제공합니다.
나는 CL (Command Line)을 선호하며 Linux를 사용하는 사람들은이 경우 매일 Ubuntu를 사용하여 기본 명령을 배우는 데 현명하게 GUI 응용 프로그램을 통해 시간을 투자하거나 적어도 두 가지 모두를 마스터 할 수 있다고 제안합니다. 어느 정도!
나는 전문가가 아니지만 위의 답변을 읽는 것은 아마도 proc 파일 시스템을 통해 이것을 수행하는보다 직접적인 방법이있을 것 같습니다. 실제로 ID 코드가 $ mypid 인 프로세스의 경우 자식 프로세스가
/proc/$mypid/task/$mypid/children
예 :
$ cat /proc/3123/task/3123/children
3131 3133
마찬가지로 파일의 "PPid"항목을 통해 상위 프로세스 ID를 얻을 수 있습니다.
/proc/$mypid/task/$mypid/status
예 :
$ grep PPid /proc/3131/task/3131/status
PPid: 3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123
그래도 이것이 리눅스 시스템을 넘어서 얼마나 이식 가능한지 잘 모르겠습니다.
ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2
POSIX 호환이어야합니다.