
Windowsの場合、私の考えではプロセスブラウザプロセスの下のすべてのスレッドを表示します。
特定のプロセスによって生成されたすべてのスレッドに関する詳細情報を表示するための同様のLinux用のコマンドラインユーティリティはありますか?
私自身をもっと明確にしなければならないと思います。プロセス階層を表示するのではなく、特定のプロセスによって生成されたすべてのスレッドのリストを表示したいと思います。
このスクリーンショットを見てください
Linuxでこれを達成するには?ありがとうございます!
答え1
クラシックツールはtop
デフォルトでプロセスを表示しますが、スレッドはH
キーストロークまたは-H
コマンドラインオプションで表示できます。しかもトップ、に似ていますtop
が、スクロールと色があり、デフォルトですべてのスレッドを表示します(ただしドラッグできます)。ps
スレッドを表示するいくつかのオプションもあります。特にH
と-L
。
スレッドに関する情報を表示できるGUIツールもあります。キュー数(簡単なGUIラッパーps
)またはコンキ(多数の構成オプションを備えたシステムモニター)
/proc/12345
各プロセスについて、12345
プロセスIDから多くの情報を取得できます。カーネルスレッドIDがある/proc/12345/task/67890
場所では、各スレッドに関する情報を使用できます。67890
ここからps
、top
およびその他のツールが情報を取得します。
答え2
Linuxでスレッドをリストする
現在利用可能な回答
ここにあるすべての回答は、プロセスに関連するすべてのスレッドのリストであり、基本的にプロセスだけでなくシステム内htop
のすべてのスレッドをリストするので、明確ではない可能性があるユーザーが指定した内容を正確に提供することを明確にしたいと思います。top -H -p <pid>
次のようにうまく機能します。
top - 00:03:29 up 3 days, 14:49, 5 users, load average: 0.76, 0.33, 0.18
Tasks: 18 total, 0 running, 18 sleeping, 0 stopped, 0 zombie
Cpu(s): 22.6%us, 5.7%sy, 4.2%ni, 66.2%id, 0.8%wa, 0.5%hi, 0.1%si, 0.0%st
Mem: 2063948k total, 1937744k used, 126204k free, 528256k buffers
Swap: 1052220k total, 11628k used, 1040592k free, 539684k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30170 daniel 20 0 371m 140m 107m S 10.0 7.0 0:31.37 source:src
30066 daniel -90 0 371m 140m 107m S 2.0 7.0 0:07.87 clementine
30046 daniel 20 0 371m 140m 107m S 0.0 7.0 0:32.05 clementine
30049 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.03 clementine
30050 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.31 clementine
30051 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30052 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30053 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30054 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.03 clementine
30055 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30056 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30057 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.04 clementine
30058 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30060 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.16 clementine
30061 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30062 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30064 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
30065 daniel 20 0 371m 140m 107m S 0.0 7.0 0:00.00 clementine
ちなみに、このスレッドは-90
実際にはリアルタイムスレッドです。
しかし、
実際のCLIである別のオプションがありますps
。プロセスID(pid
)が1つapplication name
以上見つかるかどうかによって異なりますfilters
。
-T
パラメータの意味が異なり、スレッドを表示する他の方法がないため、MacOSまたはBSDでは機能しません。
ps
とpid
使用ps -T -p <pid>
-T
すべてのスレッドを一覧表示-p
プロセスIDの指定
例は次のとおりです。
$ ps -T -p 30046
PID SPID TTY TIME CMD # this is here for clarity
30046 30046 pts/2 00:00:17 clementine
30046 30049 pts/2 00:00:00 clementine
30046 30050 pts/2 00:00:00 clementine
30046 30051 pts/2 00:00:00 clementine
30046 30052 pts/2 00:00:00 clementine
30046 30053 pts/2 00:00:00 clementine
30046 30054 pts/2 00:00:00 clementine
30046 30055 pts/2 00:00:00 clementine
30046 30056 pts/2 00:00:00 clementine
30046 30057 pts/2 00:00:00 clementine
30046 30058 pts/2 00:00:00 clementine
30046 30060 pts/2 00:00:00 clementine
30046 30061 pts/2 00:00:00 clementine
30046 30062 pts/2 00:00:00 clementine
30046 30064 pts/2 00:00:00 clementine
30046 30065 pts/2 00:00:00 clementine
30046 30066 pts/2 00:00:03 clementine
ps
そしてapplication name
使用ps -T -C <application name>
-T
すべてのスレッドを一覧表示-C
指定する<application name>
例は次のとおりです。
$ ps -e -T -C clementine
PID SPID TTY TIME CMD # this is here for clarity
30046 30046 pts/2 00:00:17 clementine
30046 30049 pts/2 00:00:00 clementine
30046 30050 pts/2 00:00:00 clementine
30046 30051 pts/2 00:00:00 clementine
30046 30052 pts/2 00:00:00 clementine
30046 30053 pts/2 00:00:00 clementine
30046 30054 pts/2 00:00:00 clementine
30046 30055 pts/2 00:00:00 clementine
30046 30056 pts/2 00:00:00 clementine
30046 30057 pts/2 00:00:00 clementine
30046 30058 pts/2 00:00:00 clementine
30046 30060 pts/2 00:00:00 clementine
30046 30061 pts/2 00:00:00 clementine
30046 30062 pts/2 00:00:00 clementine
30046 30064 pts/2 00:00:00 clementine
30046 30065 pts/2 00:00:00 clementine
30046 30066 pts/2 00:00:03 clementine
ps
とfilter
使用ps -e -T | grep <filter>
-e
すべてのプロセスを表示-T
すべてのスレッドを一覧表示|
出力を次のコマンドにパイプgrep
これは<filter>
(この場合<application name>
)でコンテンツをフィルタリングします。
例は次のとおりです。
$ ps -e -T | grep clementine
PID SPID TTY TIME CMD # this is here for clarity
30046 30046 pts/2 00:00:17 clementine
30046 30049 pts/2 00:00:00 clementine
30046 30050 pts/2 00:00:00 clementine
30046 30051 pts/2 00:00:00 clementine
30046 30052 pts/2 00:00:00 clementine
30046 30053 pts/2 00:00:00 clementine
30046 30054 pts/2 00:00:00 clementine
30046 30055 pts/2 00:00:00 clementine
30046 30056 pts/2 00:00:00 clementine
30046 30057 pts/2 00:00:00 clementine
30046 30058 pts/2 00:00:00 clementine
30046 30060 pts/2 00:00:00 clementine
30046 30061 pts/2 00:00:00 clementine
30046 30062 pts/2 00:00:00 clementine
30046 30064 pts/2 00:00:00 clementine
30046 30065 pts/2 00:00:00 clementine
30046 30066 pts/2 00:00:03 clementine
各プロセスは同じPIDを持っているので、同じプロセスにあることがわかります。
答え3
トップtopのcursバージョンには、各プロセスのすべてのスレッドをツリービューに表示する表示オプションがあります。起動してhtop
押すと、次F5のような結果になります。
答え4
プロセス情報を表示するための2つの標準ツールはps
、top
(htop
改善)。
メモ:
- 多くのプログラムがスレッドの見かけの名前を意味のある名前に変更します。以下のツールはバイナリ名または見かけの名前を表示できます(以下の例ではPID 1086を確認してください)。
- 以下の例では、回答を短くするためにほとんどのプロセスを削除しました。
- 次のコマンドパラメータの例は一般的です。代替オプション(、、
ps -m
...)はマンページを確認してください。ps m
ps H
全体またはプロセスをリアルタイムで表示するには、次を使用します。top -H
top - 16:24:42 up 3:49, 3 users, load average: 0.23, 0.29, 0.31
Threads: 503 total, 2 running, 501 sleeping, 0 stopped, 0 zombie
%Cpu(s): 9.7 us, 1.6 sy, 0.0 ni, 88.5 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3938668 total, 2148708 used, 1789960 free, 133524 buffers
KiB Swap: 3903484 total, 0 used, 3903484 free. 822904 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1054 root 20 0 258664 3524 2692 S 0.0 0.1 0:00.00 rsyslogd
1086 root 20 0 258664 3524 2692 S 0.0 0.1 0:00.03 in:imuxsock
1087 root 20 0 258664 3524 2692 S 0.0 0.1 0:00.00 in:imklog
1090 root 20 0 258664 3524 2692 S 0.0 0.1 0:00.05 rs:main Q:Reg
2452 fpiat 20 0 25292 7520 3580 S 0.0 0.2 0:00.69 bash
2495 fpiat 20 0 25088 6988 3256 S 0.0 0.2 0:00.05 bash
すべてのプロセスとスレッドをすぐに表示するには、次のようにします。ps -eLf
$ ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1054 1 1054 0 4 12:34 ? 00:00:00 /usr/sbin/rsyslogd -n
root 1054 1 1086 0 4 12:34 ? 00:00:00 /usr/sbin/rsyslogd -n
root 1054 1 1087 0 4 12:34 ? 00:00:00 /usr/sbin/rsyslogd -n
root 1054 1 1090 0 4 12:34 ? 00:00:00 /usr/sbin/rsyslogd -n
franklin 2452 2448 2452 0 1 12:35 pts/0 00:00:00 /bin/bash
franklin 2495 2448 2495 0 1 12:36 pts/1 00:00:00 /bin/bash
プロセスのスレッド情報、使用ps -T
ps -T -C rsyslogd
PID SPID TTY TIME CMD
1054 1054 ? 00:00:00 rsyslogd
1054 1086 ? 00:00:00 in:imuxsock
1054 1087 ? 00:00:00 in:imklog
1054 1090 ? 00:00:00 rs:main Q:Reg
(注:プロセスを選択するには-C command
、または任意のオプションを使用してください)-p PID
プロセスのスレッド情報を詳しく説明し、カスタマイズを使用します。ps
$ ps -L -o pid,lwp,pri,nice,start,stat,bsdtime,cmd,comm -C rsyslogd
PID LWP PRI NI STARTED STAT TIME CMD COMMAND
1054 1054 19 0 12:34:53 Ssl 0:00 /usr/sbin/rsyslogd -n rsyslogd
1054 1086 19 0 12:34:53 Ssl 0:00 /usr/sbin/rsyslogd -n in:imuxsock
1054 1087 19 0 12:34:53 Ssl 0:00 /usr/sbin/rsyslogd -n in:imklog
1054 1090 19 0 12:34:53 Ssl 0:00 /usr/sbin/rsyslogd -n rs:main Q:Reg