上部には、同じプロセスのスレッドの異なるPIDが表示されます。どうすれば修正できますか?

上部には、同じプロセスのスレッドの異なるPIDが表示されます。どうすれば修正できますか?

ps -efT(where -T= )を実行すると、Show threads, possibly with SPID column.すべてのスレッドが期待したものと同じPIDを持つことがわかります。

myroot   24958 24958  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24959  7942  0 20:20 pts/12   00:00:11 java -jar myapp.jar
myroot   24958 24960  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24961  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24962  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24963  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24964  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar
myroot   24958 24965  7942  0 20:20 pts/12   00:00:00 java -jar myapp.jar

上記のように、すべてのスレッドは同じPIDを共有/表示します24958


今私が同じことをするときトップまたはトップ、各スレッドのPIDが異なるため、気になります。すべてのスレッドに対して同じPIDを表示する方法はありますか?以下は縮小された出力ですtop -H -p 24958(問題を説明して表示するために-pでtopを使用しました)。

top - 21:42:44 up 9 days, 18:38,  0 users,  load average: 0.00, 0.26, 0.82
Threads:  32 total,   0 running,  32 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  12542.5 total,  10135.3 free,    826.8 used,   1580.4 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  11439.4 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
24958 myroot    20   0 7036228 340720  21084 S   0.0   2.7   0:00.00 java
24959 myroot    20   0 7036228 340720  21084 S   0.0   2.7   0:11.99 java
24960 myroot    20   0 7036228 340720  21084 S   0.0   2.7   0:00.43 GC Thread#0
24961 myroot    20   0 7036228 340720  21084 S   0.0   2.7   0:00.00 G1 Main Marker
24962 myroot    20   0 7036228 340720  21084 S   0.0   2.7   0:00.00 G1 Conc#0
--and few more threads.    

を使用する場合、top -Hすべてのスレッドが同じPIDを持っていることを確認しない限り、すべてのスレッドが同じプロセスに属しているかどうかを知る方法はありません。
top(またはhtop)を使用するときにすべてのスレッドに対して同じPIDを取得する方法のガイドライン。私が観察したように、htopにも同じ問題があります。)

@user1686の答えに従ってTGID列を使用してください。スレッドのPIDが何を意味するのか知りたいです。

ベストアンサー1

htopを使用するには列が必要です(>経由)TGID>経由で追加します。F2リスト)。同じ名前でtopでも機能しますが、topを設定する方法がわかりません。

Linuxの「プロセス」は実際にはスレッドグループ(またはワークグループ)にすぎず、top / htopの「PID」列には実際にスレッドID(タスクID)が表示されます。同じクローン(2)システムコールは両方を生成するために使用されますCLONE_THREAD。詳細についてはをご覧ください。

おすすめ記事