Linux 查看進程創建的線程

前言

檢查線上服務器狀態,有時會發現幾臺機器內存佔用很高。一般這種情況肯定是遠程登錄服務器,然後查看各個進程的內存佔用。當發現某個進程佔用的內存過高時,首要的檢查點通常是進程創建線程的情況,以下則是 Linux 中查看進程擁有的線程的相關命令

1. ps 命令

  1. ps -T p <pid>
    ps 命令中,“-T”選項可以開啓線程查看。ps -T p 16241 命令輸出如下,其中 SPID列即爲線程的 ID。這個命令後面接上 wc 即可統計進程下創建的線程總數 ps -T p 16241 | wc -l
    在這裏插入圖片描述

  2. ps p <pid> -L -o pcpu,pmem,pid,tid,time,tname,cmd
    示例命令ps p 16241 -L -o pcpu,pmem,pid,tid,time,tname,cmd可以查看所有屬於進程 16241 的線程,其中 TID 列就是線程ID。同樣,命令後接上 wc 可以統計屬於該進程的線程總數
    在這裏插入圖片描述

  3. pstree -p <pid>
    命令 pstree -pa 25393 以樹形的方式顯示進程 25393 創建的線程
    在這裏插入圖片描述

2. top 命令

top 命令可以實時顯示各個線程情況。要在top輸出中開啓線程查看,可調用 top 命令的“-H”選項,該選項會列出所有 Linux 線程。在 top 運行時,也可以通過按“H”鍵將線程查看模式切換爲開或關,打開時每一行顯示的都是線程

top -H p <pid> 命令可檢查該進程內運行的線程狀況,示例如下。可以看到線程的總數,及每條線程的 ID 等信息
在這裏插入圖片描述

3. 查看系統文件

cat /proc/<pid>/status 命令可直接讀取系統保存的進程狀態文件,其中可以看到進程擁有的線程數量,及其所佔用的內存大小。需注意,使用該命令要保證登錄所用的賬戶有系統文件的訪問權限
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章