프로세스의 자식 찾기


답변:


26

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)를 인쇄하는 데 사용됩니다.


10

PID가있는 프로세스의 직계 자식 만 보려면 명령 옵션을 123사용할 수 있습니다 .ps--ppid

ps --ppid 123

pidof이름을 사용하여 프로세스의 자식을 가져 오는 명령 과 함께 사용할 수 있습니다.foo

ps --ppid $(pidof foo)

10

다른 옵션은 시스템 모니터 를 사용하는 것입니다 (사전 설치되어 제공됨). SM 메뉴 표시 줄에서 "보기"아래의 "종속성"옵션을 표시하여 아래 스크린 샷과 같이 부모 및 자식 프로세스를 보여주는 시각적 피드백을 제공합니다.

나는 CL (Command Line)을 선호하며 Linux를 사용하는 사람들은이 경우 매일 Ubuntu를 사용하여 기본 명령을 배우는 데 현명하게 GUI 응용 프로그램을 통해 시간을 투자하거나 적어도 두 가지 모두를 마스터 할 수 있다고 제안합니다. 어느 정도!

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


1
OT : 어떤 주제입니까?
muru

1
Ubuntu + GnomeShell 3.2.1을 사용합니다. 테마는 GTK3 테마 인 "AdwaitaDark"라고하지만 스크린 샷에서 볼 수 있듯이 사용자 정의되어 사용할 수 없습니다.
v2r

6

나는 전문가가 아니지만 위의 답변을 읽는 것은 아마도 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

그래도 이것이 리눅스 시스템을 넘어서 얼마나 이식 가능한지 잘 모르겠습니다.


1
이식성이 문제가되는 경우 : ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2POSIX 호환이어야합니다.
muru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.