Process

如何通過 ps 列出有關執行緒/LWP 的資訊?

  • May 17, 2020

如何列出有關執行緒/LWP 的資訊ps

為什麼我不能簡單地這樣做:

$ ps 10173
 PID TTY      STAT   TIME COMMAND
$ ps -L 10173
 PID   LWP TTY      STAT   TIME COMMAND

我能做的最好的

$ ps -eL  | grep 10173
10172 10173 pts/8    00:00:00 java

這是一個 LWP,因為

$ ps -L 10172
 PID   LWP TTY      STAT   TIME COMMAND
10172 10172 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10173 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10174 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10175 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10176 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10177 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10178 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10179 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10180 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10181 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10182 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10183 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10184 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10185 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10186 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10187 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10188 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10189 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10190 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main

$ pstree -pau -l -G -s 10172
systemd,1 splash
 └─lxterminal,3194,t
     └─bash,12150
         └─java,10172 -cp target com.mycompany.app.Main
             ├─{java},10173
             ├─{java},10174
             ├─{java},10175
             ├─{java},10176
             ├─{java},10177
             ├─{java},10178
             ├─{java},10179
             ├─{java},10180
             ├─{java},10181
             ├─{java},10182
             ├─{java},10183
             ├─{java},10184
             ├─{java},10185
             ├─{java},10186
             ├─{java},10187
             ├─{java},10188
             ├─{java},10189
             └─{java},10190

謝謝。

如果您只想查看該 LWP 程序,ps -e -q 10172. 如果你想查看所有相關的執行緒,那麼你可以這樣做ps -eL -q 10172

因此,例如,在我的機器上rsyslog有執行緒:

 PID   LWP TTY          TIME CMD
22316 22316 ?        00:00:00 rsyslogd
22316 22318 ?        00:02:23 in:imjournal
22316 22319 ?        00:00:00 in:imudp
22316 22320 ?        00:00:07 in:imtcp
22316 22321 ?        00:00:00 in:imtcp
22316 22322 ?        00:00:00 in:imtcp
22316 22323 ?        00:00:00 in:imtcp
22316 22324 ?        00:00:00 in:imtcp
22316 22325 ?        00:00:24 rs:main Q:Reg

我可以看到一個執行緒(例如 22320)

% ps -e -q 22320
 PID TTY          TIME CMD
22316 ?        00:02:55 in:imtcp

請注意,它顯示了程序的主 PID。

我可以看到該執行緒的所有相關程序:

% ps -eL -q 22320
 PID   LWP TTY          TIME CMD
22316 22316 ?        00:00:00 rsyslogd
22316 22318 ?        00:02:23 in:imjournal
22316 22319 ?        00:00:00 in:imudp
22316 22320 ?        00:00:07 in:imtcp
22316 22321 ?        00:00:00 in:imtcp
22316 22322 ?        00:00:00 in:imtcp
22316 22323 ?        00:00:00 in:imtcp
22316 22324 ?        00:00:00 in:imtcp
22316 22325 ?        00:00:24 rs:main Q:Reg

引用自:https://unix.stackexchange.com/questions/512289