今天我們來了解一下linux系統上程序的檢視及管理的工具: htop、top、dstat、ps 它們可以幫助我們快速的去查找和定位問題,并可以對目前系統的運作狀況及使情況進行實時列印;
接着我們說一下什麼是程序, 在系統啟動後全産生許多程序,程序就是運作中的程式的一個副本,程序是有生命周期的,一般會随着自身所在bash的關閉而關閉,所有程序都是在系統啟動後由/sbin/init來建立的,而程序之間存在父子關系,所有的子程序都是由其父程序建立的;
程序與程序間存在優先級:1-139
1-99:實時優先級 (數字越小,優先級越高)
100-139:靜态優先級
程序類型:
守護程序: 在系統引導過程中啟動的程序,跟終端無關的程序;
前台程序:跟終端相關,通過終端啟動的程序
注意:也可把在前台啟動的程序送往背景,以守護模式運作;
程序狀态:
運作态:running
就緒态:ready
睡眠态:
可中斷:interruptable
不可中斷:uninterruptable
停止态:暫停于記憶體中,但不會被排程,除非手動啟動之;stopped
僵死态:zombie
接着我們說一下這幾個工具
ps [options]:
選項有三種風格:UNIX、BSD、GNU
選項:
a: 所有與終端相關的程序;
x: 所有與終端無關的程序;
u: 以使用者為中心來組織程序狀态資訊顯示;
常用組全之一:aux
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuUDOxMGdsJmMXVUVDFUQPBFcIF0MtVGajFDTvl2S39CXygzLcZ0NvwFMw00LcJDMzZWe39CXt92Yu8GdjFTNukzcvw1LcpDc0RHaiojIsJye.png)
VSZ:虛拟記憶體集;(占用的虛拟記憶體)
RSS:Resident Size,常駐記憶體集;
CPU%:cpu時間占用比率
MEM%:記憶體占用百分比
STAT:
R:running(運作态)
S:interruptable sleeping(可中斷睡眠)
D:uninterruptable sleeping(不可中斷睡眠)
T:Stopped(停止态)
Z:zombie(僵死态)
+:前台程序
l:多線程程序
N:低優先級程序
<:高優先級程序
s:session leader (程序上司者)
常用組合之二:-ef
-e:顯示所有程序
-f:顯示完整格式的程序資訊
常用組合之三:-eFH
-F:顯示完整格式的程序資訊;
C: cpu utilization
PSR:運作于哪顆CPU之上
-H:以層級結構顯示程序的相關資訊
常用組合之四:-eo, axo
o field1, field2,...:自定義要顯示的字段清單,以逗号分隔;
常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority, 優先級;
rtprio:real time priority,實時優先級;
top指令:
- display Linux processes
排序:
P:以占據CPU百分比排序;
M:以占據記憶體百分比排序;
T:累積占用CPU時間排序;
首部資訊:
uptime資訊:l指令
tasks及cpu資訊:t指令
記憶體資訊:m指令
退出指令:q
修改重新整理時間間隔:s
終止指定的程序:k
選項:
-d #:指定重新整理時間間隔,預設為3秒;
-b:以批次方式顯示;
-n #:顯示多少批次;
第一行:系統時間、運作時長、登入使用者數、平均負載
第二行:總任務數、運作數、睡眠數、停止數、僵死數
第三行:CPU: us:使用者空間、sy:核心空間、ni:Nice值額外占用時間、id:空閑時間、wa:等待時間、hi:硬中斷消耗百分比、si:軟中斷消耗百分比、st:虛拟化分走的時間比
第四行:記憶體總數、使用的、空閑的、緩沖的
第五行:交換分區總數、使用的、空閑的、緩存的
程序管理類指令:
htop指令:
選項:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定使用者的程序;
-s COLUME:以指定字段進行排序;
子指令:
l:顯示標明的程序打開的檔案清單;
s:跟蹤標明的程序的系統調用;
t:以層級關系顯示各程序狀态;
a:将標明的程序綁定至某指定的CPU核心;
htop 是一個非常強大的工具,下面從F1到F10可以看到具體的參數資訊
F1的幫助資訊
也可在首頁按F2進行CPU、MEM、SWAP的顯示效果進行設定:
dstat:系統資源統計指令(動态)
dstat [-afv] [options..] [delay [count]]
常用選項:
-c, --cpu:顯示cpu相關資訊;
-C #,#,...,total
-d, --disk:顯示磁盤的相關資訊
-D sda,sdb,...,tobal
-g:顯示page相關的速率資料;
-m:Memory的相關統計資料
-n:Interface的相關統計資料;
-p:顯示process的相關統計資料;
-r:顯示io請求的相關的統計資料;
-s:顯示swapped的相關統計資料;
--tcp:顯示tcp套接字
--udp:顯示udp連接配接
--raw:顯示裸套接字
--socket:套接字
--ipc:程序間通信資訊
--top-cpu:顯示最占用CPU的程序;
--top-io:最占用io的程序;
--top-mem:最占用記憶體的程序;