================================
詳解:https://blog.csdn.net/achenyuan/article/details/77867661
================================
使用命令
top
統計信息區前五行是系統的統計信息,每一行代表了不同的數據內容。
第一行是任務隊列信息,跟 uptime 命令的執行結果一樣,說明如下:
17:01:28 系統當前時間
up 95 days,4:53 系統的運行時間:95天4個小時53分鍾
2 users 當前登錄用戶數
load average: 1.13,1.04,1.01 系統負載,即任務隊列的平均長度,三個數據分別是1分鍾、5分鍾、15分鍾前到現在的平均值
第二行是進程信息,說明如下:
107 total 進程總數
1 running 正在運行的進程數
105 sleeping 休眠的進程數
0 stopped 停止的進程數
1 zombie 僵屍進程數
第三行是CPU信息,說明如下:
50.5%us 用戶空間占用CPU百分比
0.2%sy 內核空間占用CPU百分比
0.0%ni 用戶進程空間內改變過優先級的進程占用CPU百分比
49.3%id 空閑CPU百分比
0.0%wa 等待輸入輸出的CPU時間百分比
0.0%hi 硬件CPU中斷占用百分比
0.0%si 軟中斷占用百分比
0.0%st 虛擬機占用百分比
后二行是內存信息,說明如下:
Mem:
3921144k total 物理內存總量
3221212k used 使用的物理內存總量
699932k free 空閑內存總量
196932k buffers 用作內核緩存的內存量
Swap:
192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閑交換區總量
123988k cached 緩沖的交換區總量(內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於內存中的交換區的大小,相應的內存再次被換出時可不必再對交換區寫入)
統計區域的下方顯示了各個進程的詳細信息,相關列說明如下:
序號 列名 含義
a PID 進程id
b PPID 父進程id
c RUSER Real user name
d UID 進程所有者的用戶id
e USER 進程所有者的用戶名
f GROUP 進程所有者的組名
g TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
h PR 優先級
i NI nice值。負值表示高優先級,正值表示低優先級
j P 最后使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間占用百分比
l TIME 進程使用的CPU時間總計,單位秒
m TIME+ 進程使用的CPU時間總計,單位1/100秒
n %MEM 進程使用的物理內存百分比
o VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
p SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。
q RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
r CODE 可執行代碼占用的物理內存大小,單位kb
s DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb
t SHR 共享內存大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最后一次寫入到現在,被修改過的頁面數。
w S 進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)
x COMMAND 命令名/命令行
y WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
z Flags 任務標志,參考 sched.h
默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。
按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
=========================================================================
指定PID查看 某個進程的信息
top -p 173249
==========================================附錄,查看java進程下的線程統計情況=========================================
方式1:使用參數-H 指定查看某個進程下的線程數量
先使用top獲取java進程的PID
top
再使用-H參數 使用-p指定java進程的PID ,查看java進程下線程的統計情況
top -H -p 450957
如下,可以看到總共有13929個線程, 有13928個在睡眠
方式2:是用ps命令查看
ps huH p 450957 | wc -l
注意PID是java進程的PID
ps huH p {PID} | wc -l