I want to monitor only a process and its children processes on htop
. Filtering on the name of the parent process lists only the parent process, not its children. How do I show the children processes too?
-
2There is an issue 76 in the new htop repo. Vote for it!– Victor SergienkoMar 26, 2021 at 23:08
-
Related: github.com/ClementTsang/bottom/issues/734– Andrey MishchenkoMay 19 at 15:45
3 Answers
Under Linux, you can do:
htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`
where $PID
is the root process. This works as follows:
- The list of the wanted processes are obtained with
pstree
, using the-p
option to list them with their PID. - The output is piped to a Perl script that retrieves the PID's, using a regular expression (here,
\((\d+)\)
), and outputs them separated with commas. - This list is provided as an argument of
htop -p
.
For other OS like Mac OS, you may need to adapt the regular expression that retrieves the PIDs.
Note: It is unfortunately not possible to update the list with new children that are spawn later, because once htop
has been executed, one cannot do anything else. This is a limitation of htop
(current version: 2.0.2).
-
-
@becko
$PID
has to be the pid, but you can get the id from the name of the process withpgrep
.– vinc17Feb 7, 2015 at 18:25 -
6this will not update when new children are spawned though... would love to use sth like it for monitoring only stuff in my tmux session Sep 18, 2015 at 10:06
-
-
On macOS with
pstree
from homebrew:htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
– jpsimJul 27, 2017 at 19:12
htop -p $(ps -ef | awk -v proc=15305 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')
Use awk to create a comma separated list of process id's from the output of ps -ef passing the parent process id as proc and then passing this out to htop -p.
htop -p $(ps -ef | awk -v proc=$PID 'BEGIN{pids[proc]=1;printf "%s",proc} {if(pids[$3]==1){printf ",%s",$2; pids[$2]=1}}')
Where $PID
is the root process id.
Use awk to create a comma separated list of the specified process and its descendant processes and pass the output to htop -p
.