htop에 프로세스와 해당 하위 프로세스 만 표시하는 방법은 무엇입니까?


10

에서 프로세스와 해당 하위 프로세스 만 모니터링하고 싶습니다 htop. 상위 프로세스 이름을 필터링하면 하위 프로세스가 아닌 상위 프로세스 만 나열됩니다. 어린이 프로세스도 어떻게 표시합니까?

답변:


8

Linux에서는 다음을 수행 할 수 있습니다.

htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`

$PID루트 프로세스는 어디에 있습니까 ? 이것은 다음과 같이 작동합니다.

  1. PID로 원하는 프로세스 를 나열 pstree하는 -p옵션을 사용하여 원하는 프로세스 목록을 얻습니다 .
  2. 출력은 정규식 (여기서는 \((\d+)\))을 사용하여 PID를 검색하고 쉼표로 구분하여 출력 하는 Perl 스크립트로 파이프됩니다 .
  3. 이 목록은의 인수로 제공됩니다 htop -p.

Mac OS와 같은 다른 OS의 경우 PID를 검색하는 정규식을 조정해야 할 수도 있습니다.

참고 : 불행히도 나중에 생성 된 새 자식으로 목록을 업데이트하는 것은 불가능합니다. 한 번 htop실행 된 후에 는 다른 작업을 수행 할 수 없기 때문입니다. 이것은 htop(현재 버전 : 2.0.2) 의 한계입니다 .


$PID프로세스의 이름이거나 ID 여야합니까?
becko

@becko $PID는 pid 여야하지만을 사용하여 프로세스 이름에서 ID를 얻을 수 있습니다 pgrep.
vinc17

5
이것은 새로운 아이들이 스폰 될 때 업데이트되지 않을 것입니다 ... 내 tmux 세션에서만 물건을 모니터링하기 위해 sth를 사용하고 싶습니다
black_puppydog

@black_puppydog 나도!
becko

pstreehomebrew 와 함께 macOS 에서 :htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
jpsim

0
htop -p $(ps -ef | awk -v proc=15305 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')

awk를 사용하여 ps -ef의 출력에서 ​​쉼표로 구분 된 프로세스 ID 목록을 작성하여 상위 프로세스 ID를 proc로 전달한 다음 htop -p에 전달하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.