首頁 > 軟體

Linux系統入門學習:Linux上如何檢視某個進程的執行緒

2020-06-16 17:58:33

問題: 我的程式在其內部建立並執行了多個執行緒,我怎樣才能在該程式建立執行緒後監控其中單個執行緒?我想要看到帶有它們名稱的單個執行緒詳細情況(如,CPU/記憶體使用率)。

執行緒是現代作業系統上進行並行執行的一個流行的程式設計方面的抽象概念。當一個程式內有多個執行緒被叉分出用以執行多個流時,這些執行緒就會在它們之間共用特定的資源(如,記憶體地址空間、開啟的檔案),以使叉分開銷最小化,並避免大量高成本的IPC(進程間通訊)通道。這些功能讓執行緒在並行執行時成為一個高效的機制。

在Linux中,程式中建立的執行緒(也稱為輕量級進程,LWP)會具有和程式的PID相同的“執行緒組ID”。然後,各個執行緒會獲得其自身的執行緒ID(TID)。對於Linux核心排程器而言,執行緒不過是恰好共用特定資源的標準的進程而已。經典的命令列工具,如ps或top,都可以用來顯示執行緒級別的資訊,只是預設情況下它們顯示進程級別的資訊。

這裡提供了在Linux上顯示某個進程的執行緒的幾種方式。

 

方法一:PS

在ps命令中,“-T”選項可以開啟執行緒檢視。下面的命令列出了由進程號為<pid>的進程建立的所有執行緒。

  1. $ ps -T -p <pid>

“SID”欄表示執行緒ID,而“CMD”欄則顯示了執行緒名稱。

 

方法二: Top

top命令可以實時顯示各個執行緒情況。要在top輸出中開啟執行緒檢視,請呼叫top命令的“-H”選項,該選項會列出所有Linux執行緒。在top執行時,你也可以通過按“H”鍵將執行緒檢視模式切換為開或關。

  1. $ top -H

要讓top輸出某個特定進程<pid>並檢查該進程內執行的執行緒狀況:

  1. $ top -H -p <pid>

 

方法三: Htop

一個對使用者更加友好的方式是,通過htop檢視單個進程的執行緒,它是一個基於ncurses的互動進程檢視器。該程式允許你在樹狀檢視中監控單個獨立執行緒。

要在htop中啟用執行緒檢視,請開啟htop,然後按<F2>來進入htop的設定選單。選擇“設定”欄下面的“顯示選項”,然後開啟“樹狀檢視”和“顯示自定義執行緒名”選項。按<F10>退出設定。

現在,你就會看到下面這樣單個進程的執行緒檢視。


via: http://ask.xmodulo.com/view-threads-process-linux.html

作者:Dan Nanni 譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-06/118868.htm


IT145.com E-mail:sddin#qq.com