Linuxでプロセスが所有するすべてのスレッドの詳細を表示する方法はありますか?

Linuxでプロセスが所有するすべてのスレッドの詳細を表示する方法はありますか?

Windowsの場合、私の考えではプロセスブラウザプロセスの下のすべてのスレッドを表示します。

特定のプロセスによって生成されたすべてのスレッドに関する詳細情報を表示するための同様のLinux用のコマンドラインユーティリティはありますか?


私自身をもっと明確にしなければならないと思います。プロセス階層を表示するのではなく、特定のプロセスによって生成されたすべてのスレッドのリストを表示したいと思います。

このスクリーンショットを見てください

代替テキスト

Linuxでこれを達成するには?ありがとうございます!

答え1

クラシックツールはtopデフォルトでプロセスを表示しますが、スレッドはHキーストロークまたは-Hコマンドラインオプションで表示できます。しかもトップ、に似ていますtopが、スクロールと色があり、デフォルトですべてのスレッドを表示します(ただしドラッグできます)。psスレッドを表示するいくつかのオプションもあります。特にH-L

スレッドに関する情報を表示できるGUIツールもあります。キュー数(簡単なGUIラッパーps)またはコンキ(多数の構成オプションを備えたシステムモニター)

/proc/12345各プロセスについて、12345プロセスIDから多くの情報を取得できます。カーネルスレッドIDがある/proc/12345/task/67890場所では、各スレッドに関する情報を使用できます。67890ここからpstopおよびその他のツールが情報を取得します。

答え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では機能しません。

pspid

使用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

psfilter

使用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のような結果になります。

htopスクリーンショット

答え4

プロセス情報を表示するための2つの標準ツールはpstophtop改善)。

メモ:

  • 多くのプログラムがスレッドの見かけの名前を意味のある名前に変更します。以下のツールはバイナリ名または見かけの名前を表示できます(以下の例ではPID 1086を確認してください)。
  • 以下の例では、回答を短くするためにほとんどのプロセスを削除しました。
  • 次のコマンドパラメータの例は一般的です。代替オプション(、、ps -m...)はマンページを確認してください。ps mps 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

関連情報