特定のプログラムのすべてのプロセスを表示する必要があります。これによりtop -p PID
プログラムだけが出ます。
top -p 381 extra_args
受け取るために入りたい
PID USER PR NI VIRT RES %CPU %MEM TIME+ S COMMAND
381 root 20 0 8715.7m 12.5m 0.0 0.3 0:48.42 S `- /usr/bin/program
10034 root 20 0 8476.3m 2.3m 0.0 0.1 0:00.03 S `- -/usr/bin/sh
10036 root 20 0 8488.3m 2.2m 0.0 0.1 0:00.01 S `- /usr/bin/sh ./login.sh
10037 root 20 0 3.9m 3.1m 0.0 0.1 0:00.54 S `- /usr/bin/bash --login +h
19995 root 20 0 8506.3m 2.4m 0.0 0.1 0:00.01 S `- -/usr/bin/sh
19997 root 20 0 8512.3m 2.2m 0.0 0.1 0:00.01 S `- /usr/bin/sh ./login.sh
19998 root 20 0 3.9m 3.1m 0.0 0.1 0:00.89 S `- /usr/bin/bash --login +h
30644 root 20 0 2.8m 2.1m 0.0 0.1 0:00.03 S `- make -j8
30647 root 20 0 2.8m 2.0m 0.0 0.1 0:00.01 S `- make all-recursive
30648 root 20 0 2.2m 1.4m 0.0 0.0 0:00.00 S `- /bin/sh -c fail=; \ if (target_option=k; case ${targe+
30661 root 20 0 2.8m 2.1m 0.0 0.1 0:00.06 S `- make all-am
30671 root 20 0 2.4m 1.6m 0.0 0.0 0:00.04 S `- /bin/sh ./libtool --silent --tag=CC --mode=co+
30808 root 20 0 3.9m 0.3m 0.0 0.0 0:00.00 S `- gcc -DHAVE_CONFIG_H -I. -I.. -I./include +
30816 root 20 0 132.3m 117.7m 98.7 3.1 0:43.18 R `- /usr/libexec/gcc/aarch64-unknown-linu+
30675 root 20 0 2.4m 1.6m 0.0 0.0 0:00.04 S `- /bin/sh ./libtool --silent --tag=CC --mode=co+
31230 root 20 0 3.9m 0.3m 0.0 0.0 0:00.00 S `- gcc -DHAVE_CONFIG_H -I. -I.. -I./include +
31231 root 20 0 88.3m 76.6m 99.4 2.0 0:20.08 R `- /usr/libexec/gcc/aarch64-unknown-linu+
31074 root 20 0 2.4m 1.6m 0.0 0.0 0:00.05 S `- /bin/sh ./libtool --silent --tag=CC --mode=co+
31274 root 20 0 3.9m 0.3m 0.0 0.0 0:00.00 S `- gcc -DHAVE_CONFIG_H -I. -I.. -I./include
top -p 381
与える代わりに
PID USER PR NI VIRT RES %CPU %MEM TIME+ S COMMAND
381 root 20 0 8715.7m 12.5m 0.0 0.3 0:48.42 S `- /usr/bin/program
これが私の主な使い方です
top -hv | -bcEeHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]
ベストアンサー1
top
おそらく作業に適したツールではないかもしれません。
ps
一種の便利ですが、ツリー内のすべてのPIDを知る必要があるため、全体的な目的は失われます。
ps u -p 2307,2312,2334,9379 --ppid 2307,2312,2334,9379 --forest
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2307 0.0 0.0 2200 264 ? Ss Dec15 0:00 runsv eto-netnses
eto 2312 0.0 0.0 2748 420 ? S Dec15 0:00 \_ s6-svscan netnses
eto 2334 0.0 0.0 2756 416 ? S Dec15 0:00 \_ s6-supervise netns-nsholder-vpn-tunnel
eto 9379 0.0 0.0 2184 300 ? Ss Dec17 0:00 \_ netns-nsholder-daemon
最も簡単な方法はpstree
ツリーを描くことですが、追加情報を出力する機能が不足しているものを使用することです。
: pstree -p 2307 -a -u
runsv,2307 eto-netnses
└─s6-svscan,2312,eto netnses
└─s6-supervise,2334 netns-nsholder-vpn-tunnel
└─pause,9379
プロセスツリーのセッションIDを取得し、そのツリー内のすべてのプロセスが同じセッションで実行されている場合、そのSIDをps --forest
フォーマットセレクタとして使用できますが、私の場合はps
ここでは機能しないため、中断されます。境界モードが交差しました。これがここで行われることです(別のpause
新しいnetns-nsholder-daemon
SIDで実行されているため、上記のリストがありません)。
: ps -p 2307 -o pid,sess
PID SESS
2307 2307
: ps u -s 2307 --forest
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2307 0.0 0.0 2200 264 ? Ss Dec15 0:00 runsv eto-netnses
eto 2312 0.0 0.0 2748 420 ? S Dec15 0:00 \_ s6-svscan netnses
eto 2334 0.0 0.0 2756 416 ? S Dec15 0:00 \_ s6-supervise netns-nsholder-vpn-tunnel
この時点で、私はあなたがおそらくより良くなると信じていますhtop
。