1。 使用top命令,具體用法是 top -H
十多年的托克遜網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整托克遜建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“托克遜網(wǎng)站設計”,“托克遜網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
加上這個選項,top的每一行就不是顯示一個進程,而是一個線程。
2。 使用ps命令,具體用法是 ps -xH
這樣可以查看所有存在的線程,也可以使用grep作進一步的過濾。
3。 使用ps命令,具體用法是 ps -mq PID
這樣可以看到指定的進程產(chǎn)生的線程數(shù)目。
更進一步,其實一些系統(tǒng)監(jiān)控工具,在本質(zhì)上也是讀取的系統(tǒng)產(chǎn)生的文件罷了。比如說進程這個事情,
看看這個目錄吧,/proc/5000/ 這里面有你所有想要的。其實stat代表著當前的一些信息。
使用ps命令來查看進程的時候,進程狀態(tài)分別對應的含義如下:
D 不可中斷睡眠 (通常是在IO操作) 收到信號不喚醒和不可運行, 進程必須等待直到有中斷發(fā)生
R 正在運行或可運行(在運行隊列排隊中)
S 可中斷睡眠 (休眠中, 受阻, 在等待某個條件的形成或接受到信號)
T 已停止的 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行
W 正在換頁(2.6.內(nèi)核之前有效)
X 死進程 (未開啟)
Z 僵尸進程 進程已終止, 但進程描述符存在, 直到父進程調(diào)用wait4()系統(tǒng)調(diào)用后釋放BSD風格的
高優(yōu)先級(not nice to other users)
N 低優(yōu)先級(nice to other users)
L 頁面鎖定在內(nèi)存(實時和定制的IO)
s 一個信息頭
l 多線程(使用 CLONE_THREAD,像NPTL的pthreads的那樣)
+ 在前臺進程組
用top或者ps -l查看進程會發(fā)現(xiàn)有PR(PRI) NI兩個字段:
NI 是優(yōu)先值,是用戶層面的概念, PR是進程的實際優(yōu)先級, 是給內(nèi)核(kernel)看(用)的。
一般情況下,PR=NI+20, 如果一個進程的優(yōu)先級PR是20, 那么它的NI(nice)值就是20-20=0。
進程調(diào)度優(yōu)先級是從-20到19,一共40個級別,數(shù)字越大,表示進程的優(yōu)先級越低。默認時候,進程的優(yōu)先級是0。查看進程優(yōu)先級有兩個辦法:ps和top。top命令顯示的NI列的值。或者可以使用ps -efl來查看,也是在ni列表示了進程的優(yōu)先級?!禠inux就該這么學》 一起學習,進程的優(yōu)先級可以在程序運行的時候設置,也可以在程序運行過程中動態(tài)的修改。
可以用下面的命令將 cpu 占用率高的線程找出來:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
這個命令首先指定參數(shù)'H',顯示線程相關的信息,格式輸出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段進行排序。這樣就可以找到占用處理器的線程了。
直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 獲取對于的進程號和線程號,然后跳轉(zhuǎn)到3.
查看哪個進程線程占用cpu過高; top / ps -aux, 獲得進程號
確定哪個線程占用cpu過高,進入進程號的目錄:/proc/pid/task,
執(zhí)行:grep SleepAVG **/status | sort -k2,2 | head, 確定cpu占用較高的線程號。
使用kill -3 pid 會打印線程堆棧的情況
在 Linux 下 top 工具可以顯示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以顯示每個 cpu 的利用率。但是無法顯示每個線程的 cpu 利用率情況,這時就可能出現(xiàn)這種情況,總的 cpu 利用率中 user 或 system 很高,但是用進程的 cpu 占用率進行排序時,沒有進程的 user 或 system 與之對應。
方法一:PS
在ps命令中,“-T”選項可以開啟線程查看。下面的命令列出了由進程號為pid的進程創(chuàng)建的所有線程。
$ ps -T -p pid
“SID”欄表示線程ID,而“CMD”欄則顯示了線程名稱。
方法二: Top
top命令可以實時顯示各個線程情況。要在top輸出中開啟線程查看,請調(diào)用top命令的“-H”選項,該選項會列出所有Linux線程。在top運行時,你也可以通過按“H”鍵將線程查看模式切換為開或關。
$ top -H
要讓top輸出某個特定進程pid并檢查該進程內(nèi)運行的線程狀況:
$ top -H -p pid
方法三: Htop
一個對用戶更加友好的方式是,通過htop查看單個進程的線程,它是一個基于ncurses的交互進程查看器。該程序允許你在樹狀視圖中監(jiān)控單個獨立線程。
要在htop中啟用線程查看,請開啟htop,然后按F2來進入htop的設置菜單。選擇“設置”欄下面的“顯示選項”,然后開啟“樹狀視圖”和“顯示自定義線程名”選項。按F10退出設置。
linux查看線程阻塞原因:pthread_join一般主線程來調(diào)用,用來等待子線程退出,因為是等待,所以是阻塞的,一般主線程會依次join所有它創(chuàng)建的子線程。
1)執(zhí)行top命令,或使用-H選項(顯示所有線程),找到相關的高CPU的PID。
2)生成thread dump 快照(kill -3 PID)。
3)將top命令輸出PID轉(zhuǎn)換為HEX格式(16進制)。
4)在thread dump data中搜索nid=Hex PID。
5)分析受影響的thread和stack trace,精確定位代碼。
特點:
Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。伴隨著互聯(lián)網(wǎng)的發(fā)展,Linux得到了來自全世界軟件愛好者、組織、公司的支持。
它除了在服務器方面保持著強勁的發(fā)展勢頭以外,在個人電腦、嵌入式系統(tǒng)上都有著長足的進步。使用者不僅可以直觀地獲取該操作系統(tǒng)的實現(xiàn)機制,而且可以根據(jù)自身的需要來修改完善Linux,使其最大化地適應用戶的需要。
Linux不僅系統(tǒng)性能穩(wěn)定,而且是開源軟件。其核心防火墻組件性能高效、配置簡單,保證了系統(tǒng)的安全。在很多企業(yè)網(wǎng)絡中,為了追求速度和安全,Linux不僅僅是被網(wǎng)絡運維人員當作服務器使用,甚至當作網(wǎng)絡防火墻,這是Linux的一大亮點。
Linux具有開放源碼、沒有版權、技術社區(qū)用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統(tǒng)中內(nèi)嵌網(wǎng)絡協(xié)議棧,經(jīng)過適當?shù)呐渲镁涂蓪崿F(xiàn)路由器的功能。這些特點使得Linux成為開發(fā)路由交換設備的理想開發(fā)平臺。