一、概述
htop、top、dstat、ps是Linux系統上的進程的查看及管理的工具;可以幫助我們快速的去查找和定位問題,並可以對當前系統的運行狀況及使情況進行實時打印;
二、進程
在系統啓動後全產生許多進程,進程就是運行中的程序的一個副本,進程是有生命週期的,一般會隨着自身所在bash的關閉而關閉,所有進程都是在系統啓動後由/sbin/init來創建的,而進程之間存在父子關係,所有的子進程都是由其父進程創建的;
進程與進程間存在優先級:1-139
1-99:實時優先級
100-139:靜態優先級
爲了讓CPU可以在同時處理多個進程,通常會對CPU劃分多個時間片,每個時間片按時間長度(5秒)來依次運算每個需要處理的進程,所以CPU在一個進程運算5秒鐘之後會把當前這個進程踢出,然後調入下一個進程繼續處理,以此類推;在保證被踢出去的這個進程處理一半的數據不會丟失,Linux內核會在task struct中進行存儲,task struct會有兩個,一個是要處理的進程的task struct,另一個爲處理過的task struct,當處理中的task struct被CPU遍歷完成後,內核會把處理過的task struct當作要處理進程的task struct給CPU繼續處理,依次類推;CPU在task struct調取進程時會按優先級進程處理;
如圖:
進程類型:
守護進程:daemon,跟終端無關,在系統引導過程中啓動的進程;
前臺進程:跟終端相關,通過終端啓動的進程;
注意:也可把在前臺啓動的進程送往後臺,以守護模式運行;
進程狀態:
運行態:running
就緒態:ready
睡眠態:
可中斷:interruptable
不可中斷:uninterruptable
停止態:暫停於內存中,但不會被調試執行,除非手動啓動之:stopped
僵死態:zombie
三、命令的使用:
ps - report a snapshot of the current processes.
ps [options]:
選項有三種風格:UNIX、BSD、GNU
啓動進程的方式:
系統啓動過程中自動啓動;與終端無關的進程;
用戶通過終端啓動;與終端相關的進程;
選項:
a: 所有與終端相關的進程;
x: 所有與終端無關的進程;
u: 以用戶爲中心來組織進程狀態信息顯示;
常用組全之一:aux
VSZ: 虛擬內存集;
RSS: Resident Size 常駐內存集;
C: CPU的佔用百分比;
STAT:
R: 運行
S: 可中斷睡眠
D: 不可中斷睡眠
T: 停止
Z: 僵死
+: 前臺進程:
l: 多線程進程;
N:低優先級進程;
<: 高優先級進程;
s: session leader會話領導者
-e: 顯示所有進程;UNIX風格;
-f: 顯示完整格式的進程信 息;
常用組合之二:-ef
-F: 顯示完整格式的進程信息;
C: cpu utilization
PSR: 運行於哪顆CPU之上;
-H:以層級結構顯示進程的相關信息;
top命令:
display Linux processess
排序:
P: 已佔據CPU百分比排序;
M: 已佔據內存百分比排序;
T: 累積佔用CPU時間排序;
首部信息:
uptime信息:l命令開啓或關閉;
tasks及cpu信息:t命令開啓或閉;
內存信息:m命令開啓或關閉;
cpu信息:數字1開啓或關閉;
退出命令:q
修改刷新時間間隔:s
終止指定的進程:k
選項:
-d #: 指定刷新時間間隔,默認爲2秒;
-b: 以批次方式顯示;
-n #:顯示多少批次;
第一行:系統時間、運行時長、登錄用戶數、平均負載(過去1分鐘、5分鐘、15分鐘)
第二行:總任務數、運行數、睡眠數、停止數、僵死數
第三行:CPU: us:用戶空間、sy:內核空間、ni:Nice值額外佔用時間、id:空閒時間、wa:等待時 間、hi:硬中斷消耗百分比、si:軟中斷消耗百分比、st:虛擬化分走的時間比
第四行:內存總數、使用的、空閒的、緩衝的
第五行:交換分區總數、使用的、空閒的、緩存的
dstat命令:
dstat [-afv] [options...] [delay [count]]
常用選項:
-c, --cpu: 顯示cpu相關信息;
-C #,#...,total
-d, --disk: 顯示磁盤的相關信息;
-D sda,sdb,...,total
-g: 顯示page相關的速率數據;
-m: Memory的相關統計數據;
-n: Interface的相關統計數據;
-p: 顯示process的相關統計數據;
-r: 顯示io請求的相關的統計數據;
-s: 顯示swapped的相關統計數據;
--tcp:顯示tcp協議狀態;
--udp:顯示udp協議狀態;
--raw:顯示raw狀態;
--socket:顯示套接字狀態;
--ipc:顯示ipc狀態;
--top-cpu: 顯示最佔用CPU的進程;
--top-io: 顯示最佔用io的進程;
--top-mem: 最佔用內存的進程;
--top-lantency: 延遲最大的進程;
htop命令:top的升級版;
(系統不自帶,需手動進行安裝)
選項:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;
-s COLUME: 以指定字段進行排序;
子命令:
l:顯示選定的進程打開的的文件列表;
s:跟蹤選定的進程的系統調用;
t:以層級關係顯示各進程狀態;
a:將選定的進程綁定至某指定的CPU核心;
按F1可進入幫助頁:
也可在首頁按F2進行CPU、MEM、SWAP的顯示效果進行設置:
按t可以按層級樹顯示:
另:htop下用戶也可以通過鼠標來快速定位要查看的進程!