グーグルで試しましたが、見つかりません。を探しています:
プロセスXのスレッド数
現在実行中のスレッドの総数
グーグルで試しましたが、見つかりません。を探しています:
プロセスXのスレッド数
現在実行中のスレッドの総数
回答:
特定のpidのスレッド数を取得するには:
ps -o nlwp <pid>
システムで実行されているすべてのスレッドの合計を取得するには:
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
ps -o nlwp <pid>
NLWPを返します:)、それはどういう意味ですか?
ps h -o nlwp $pid
私はこの答えに基づいていますps axms
。ps
実行中のものをリストするための素晴らしいツールです。
プロセスでフィルタリングしたい場合は、次のようなものを試すことができます。
echo $(( `ps axms | grep firefox | wc -l` - 1))
grepがそのリストに表示されるため、1を減算します。
一般的にすべてのスレッドで、これは機能するはずです。
echo $(( `ps axms | wc -l` - 1))
ヘッダー行があるため、今回は1つ減算します。
特にLinuxでは、プロセスごとに実行する1つの方法があります。
#!/bin/sh
while read name val; do
if [ "$name" = Threads: ]; then
printf %s\\n "$val"
return
fi
done < /proc/"$1"/status
次に、PIDを引数としてこのスクリプトを呼び出すと、そのプロセスが所有するスレッドの数が報告されます。
システム全体のスレッド数を取得するには、これで十分です。
#!/bin/sh
count() {
printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*
これらのアプローチは、彼らがシェルの機能に大きく依存していることに少し非正統的に見えるが、両方のそれらの復帰に対応するよりも速くていることps
と、awk
私のマシン上のベースのアプローチは(もパイプのために自分自身の余分なスレッドを作成されていないが)。これらのスクリプトを実行するために起動されるシェルには、独自のスレッド(または、奇妙な実装を使用している場合はそれ以上)があることに注意してください。