Terminal

如何線上程上執行“ps”命令?

  • July 6, 2021

ps 命令可以在終端中完成以查看有關程序的資訊。例如,

#list processes
ps aux
#with executable paths
ps -ef
#path for a specific process
ps -p [pid]

但是,如果程序很大,則可能需要隔離各個執行緒正在執行的操作。例如,kernel_task。該命令sudo dtruss -ap [pid]不是最優的,因為它需要關閉系統資源保護。有沒有辦法在ps不關閉系統資源保護的情況下找到有關執行緒的資訊?

謝謝

ps命令的“-T”選項啟用執行緒視圖。

# ps -T -p <pid>

例如,列出以下 java 程序的執行緒:

# ps -ef | grep 97947
deploy   97947 97942  1 00:51 ?       00:13:51 java

或者,您可以使用top可以顯示各個執行緒的實時視圖。要在輸出中啟用執行緒視圖,請top使用“-H”選項呼叫 top。這將列出所有 Linux 執行緒。您還可以在執行時打開或關閉執行緒查看模式,top方法是按“H”鍵。

top - 14:43:25 up 6 days,  5:40,  2 users,  load average: 0.87, 0.33, 0.22
Threads: 684 total,   1 running, 683 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.3 us,  4.0 sy,  0.0 ni, 89.6 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7910136 total,   384812 free,  1603096 used,  5922228 buff/cache
KiB Swap:  8388604 total,  8239100 free,   149504 used.  5514264 avail Mem

請注意在上面的範例中如何列出系統上的執行緒數。

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