概述
監控系統的各方面的性能,保障各類服務的有序運行,是運維工作的重要組成部分,本篇就介紹一些常用的系統監控命令和相關參數的說明
具體包含以下幾個部分:
1、進程管理基礎
2、進程管理類工具(ps、top、htop、kill)
3、內存監控類工具(vmstat、pmap)
4、系統監控類工具(glances、dstat)
第一章 進程管理基礎概念
1、進程是什么
運行中的程序的一個副本,因為程序可能會同時被運行多次,故可理解為一個副本,每個進程都有生命周期
linux內核存儲進程信息的固定格式,被稱為task struct(任務結構體)
多個任務的task struct組成的鏈表,被稱為task list(任務列表)
2、cpu和內存的工作模式(個人總結)
cpu是分時的:一個進程可占用多少cpu時長,一個cpu在同一時刻只能執行一個任務,CPU自身的寄存器中,存放著正在運行的進程的狀態信息,當該進程分配的時間片到了時候,即使該進程沒有執行完成,也會被調度出去,讓下一個進程放到CPU上去運行,但是對于之前沒有執行完成的進程,如果沒有一種機制保存下來進程執行到哪里的等等的一些相關信息,那么當下一次輪到該進程執行時,又要重新開始執行,這樣是不合理的。為了解決這種問題,就有了保存現場和恢復現場的概念
保存現場就是當正在運行的進程,CPU運行時間到達之后,將進程運行的狀態等信息,由內核調度存儲到內存中,這就是保存現場
恢復現場就是之前保存過的進程的運行狀態的信息,當該進程又獲得CPU運行時間時,將保存的狀態信息調度到CPU上,這樣CPU就能根據保存的狀態繼續運行進程,而不是從頭開始運行進程
內存是分空間的:一個進程可占用多少內存空間,內存分配方式有點類似磁盤,分成很多塊,但內存不叫塊,而是叫頁框(page frame)用于存儲頁面數據,一般一個page的大小為4K。分配的頁框可以有多個,且可以不連續。
進程需要用到內存數據的時候,怎么去找內存中不連續的數據?
因為數據在實際內存中可以不連續,也就是離散的,故一般情況下,內核會虛擬一個內存空間面向進程,進程不需要直接與實際的物理存儲的內存打交道,只需與內核虛擬出來的內存打交道,內核虛擬出來的內存的大小,與計算機平臺的位數有關系,一般32位系統上,單個進程虛擬出來的內存大小為4G,1G給內核使用,3G給該進程使用;64位系統上,單個進程虛擬出來的內存大小為4G個4G,內核虛擬出來的內存空間叫做線性地址空間,內核虛擬出來的內存對進程而言是連續,且獨占的。這樣,進程讀寫內存數據時就認為自己讀取的是一個連續的地址空間,且是獨占的,這段虛擬出來的空間中,只有真正被使用的部分,內核才會在物理內存上分配空間進行存儲
swap分區:為了防止過多的進程將實際物理內存占滿導致程序無法運行,從而有了swap交換分區的概念,swap分區實際是用來臨時存放內存中暫時用不到的頁面數據。置換時,通常采用LRU算法(最近最少使用)將最近最少用到的數據暫存在交換分區中
一次磁盤IO分為兩段進行,第一段是將數據從磁盤拿到內存中內核空間,第二段時將內核空間的數據復制一份放到用戶空間
3、線程相關概念
線程:是一個進程內部的多個執行流,一個執行流就叫一個線程
一個進程只有一個執行流,也可以有線程,這種模式就叫單進程單線程模型
一個進程有多個執行流,就叫單進程多線程模型
如果一個進程有多個執行流,也就是有多個線程,但是如果只有1個CPU,那么也多線程也沒有任何意義,因為一個cpu在同一時刻只能同時執行一個任務
同一個進程內部的多個線程,可以共享內存空間。比如web服務,如果是單進程模型,一個進程相應一個用戶請求,如果100個用戶請求的都是index.html頁面,那么在內存上就需要為每個進程存放都存放一個index.html的數據,這樣就造成了內存浪費,但是如果是采用單進程多線程模式,這樣利用一個線程相應一個用戶請求,這樣就只需要為這個進程在內存上存儲一份index.html的數據,然后多個線程共享這段數據,這樣就大大節約了內存的空間
Linux原生對線程的支持性不是特別好
一個進程的數據部分分為指令和數據,程序在執行時,內存中的數據也分指令數據和實際的數據,其中指令數據和部分的實際數據,是不能被交換到交換分區上的,稱之為常駐內存集,而有些數據是可以被交換到交換分區上的,稱之為虛擬內存集
4、Linux上進程創建模型
進程創建:
init進程:初始化進程,后續的所有用戶空間進程管理者(所有進程的父進程)
其他進程:除了init進程之外,所有進程都由父進程創建,父進程利用fork()系統調用生成,每個進程都是由父進程fork()自身而來,會clone()自身的數據給子進程
當父進程創建子進程時,子進程和父進程使用的是同一段內存空間;一旦子進程需要對該段內存空間的數據進行修改時,就會復制該段內存空間的數據到另外一段內存空間,子進程就指向了該段新的內存空間
這種機制叫CoW(寫時復制),如果子進程不對數據進程修改,跟父進程使用的內存空間都是同一個,但是一旦子進程要修改數據,就復制一份數據到另一塊內存供子進程單獨使用,而從此之后,子進程就一直使用新的內存空間了
進程的終止:子進程完成一定的任務之后,釋放掉自己占用的資源,然后父進程對子進程進行回收
5、進程的優先級:
0-139:
1-99:實時優先級
100-139:用戶可調度的優先級(數字越小,優先級越高)
nice值:-20到19分別對應100-139,進程初始時nice默認都為0,普通用戶只能調低自己的優先級,也就是加大自己的nice值,而管理員用戶可以任意指定
修改進程優先級:nice、renice
可調整的區間為100-139
通過調整nice值可以調整進程的優先級:
nice值的范圍為-20到19,分別對應進程優先級的100-139
進程啟動時的默認nice值都為0,故其默認優先級為120
普通用戶:只能調大nice值,也就是降低優先級,不能低于0
管理員:可以任意調整nice值-20到19
怎么調整優先級:
對于尚未啟動的程序:
nice -n 數字 COMMAND
表示啟動程序時,以指定的數字作為其nice值
對于已經啟動的進程:
renice 數字 PID
表示對指定的PID進程調整其nice值為指定數字
6、進程隊列
Linux內核為了能夠快速的實現這些優先級不同的進程的調度,將待運行的進程按照對應的優先級分成了140個運行隊列,每個優先級相同的進程為同一個隊列,這樣,內核進行調度時,不需要遍歷整個隊列,而是按照優先級從高到低,取隊列的第一個進程進行調度
同時也有140個過期隊列,就是將上面運行隊列中,調度過的進程,在為其分配的CPU時間片的時間內尚未運行完成,就放到了過期隊列,當同優先級的運行隊列中的進程都被調度完成后,就會重新調度過期隊列,此時過期隊列就變成了運行隊列
7、進程類型:
守護進程:daemon,跟終端無關,由內核在系統引導過程中啟動的進程
用戶前臺進程:用戶通過終端啟動的進程,跟終端相關
注意:也可把前臺啟動的進程收網后臺,以守護模式運行
8、進程的狀態:
運行態:running,進程正在運行中
就緒態:ready,可以運行但尚未被運行
睡眠態:sleeping
可中斷睡眠:interruptible,調度到CPU上可立即運行起來
不可中斷睡眠:uninterruptible 通常是指被IO阻塞的進程,等待IO滿足之前無法繼續運行
僵死態:zombie,找不到歸屬,父進程沒有回收該進程,父進程就掛了
停止態:stopped 暫停于內存中,不可被調度并運行
9、進程間通信機制(IPC: Inter Process Communication)
同一主機上
通過發送信號(通過kill命令):signal
共享內存shm: shared memory
semophore 信號量,一種計數器
不同主機上:
rpc: remote procedure call(NFS就是基于這種機制的)
套接字socket: IP和端口號
10、Linux系統狀態的查看及管理工具:
pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat, dstat, kill,pkill, job, bg, fg, nohup
第二章 進程管理類工具(ps、top、htop、kill)
1、ps命令(ps、pgrep、pidof)
ps命令:顯示系統當前進程的運行情況,實際是將/proc/目錄下的各個進程的相關信息轉換為我們易讀的模式展現出來
選項與參數:
-A 所有的進程都顯示出來,與-e具有同樣的效果
a 與終端無關的所有進程
u 以用戶為中心顯示與用戶相關的進程信息
x 通常與a一起使用,可列出較完整的信息
輸出格式定義:
l 列出詳細的信息
j 工作的格式
-f 完整格式列表,做一個更為完整的輸出
o 屬性選項顯示定制的信息:
psr 當前進程運行的CPU編號(四顆CPU就是0、1、2、3)
pri 當前進程的優先級
ni 當前進程的nce值(-20,19),nice值越低,優先級越高
pid 進程號
command 發起進程的命令
state 進程狀態
%cpu 占用CPU的百分比
%mem 占用內存的百分比
tty 占用的終端
euser 進程的有效用戶
ruser 進程的實際用戶
有效用戶和實際用戶可用于驗證設置了SUID權限的二進制程序文件運行時,有效用戶為進程文件的屬主用戶,實際用戶為運行程序文件的用戶
常用的組合方式:
ps -ef 以完整的信息顯示所有進程的信息
ps aux
ps axo
ps aux的顯示出來的參數的意義
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19352 1548 ? Ss Sep05 0:01 /sbin/i root 2 0.0 0.0 0 0 ? S Sep05 0:00 [kthre] root 3 0.0 0.0 0 0 ? S Sep05 0:00 [migra] root 4 0.0 0.0 0 0 ? S Sep05 0:00 [ksoft] root 5 0.0 0.0 0 0 ? S Sep05 0:00 [stopp] root 6 0.0 0.0 0 0 ? S Sep05 0:00 [watch] root 7 0.0 0.0 0 0 ? S Sep05 0:00 [migra] —————————————————————————————————————— USER:進程的發起者 PID:進程號 %CPU:進程占用掉的CPU資源的比例 %MEM:進程所占用的物理內存百分比 VSZ:進程使用掉的虛擬內存的大小,也就是內核虛擬出來的給該進程的線性地址空間的大小, 假如分配給其1000k,或許實際并沒有數據占用,單位為kb RSS:進程占用的固定物理內存的大小,實際占用的內存的大小,常駐內存集,也就是不能交換到swap分區上的數據的大小,單位為kb 一個進程的數據部分分為指令和數據,程序在執行時,內存中的數據也分指令數據和實際的數據, 其中指令數據和部分的實際數據,是不能被交換到交換分區上的,稱之為常駐內存集,而有些數 據是可以被交換到交換分區上的,稱之為虛擬內存集 TTY:進程在哪個終端運行 STAT:進程目前的狀態 各狀態的值代表的意義 R 運行狀態 S 可中斷睡眠態 D 不可中斷睡眠態 Z 僵死態 T 停止態 有的進程在進程狀態之后還會有其他字母,其分別代表的含義為: s seesion leader 會話領導者,主進程 N 低優先級進程 < 高優先級進程 l 多線程進程(小寫的L) + 前臺進程,占據著某終端 START:進程被觸發的時間 TIME:進程實際使用cpu的時間 COMMAND:觸發此進程的命令
ps -ef顯示出來的結果代表的意義
[root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Sep05 ? 00:00:01 /sbin/init root 2 0 0 Sep05 ? 00:00:00 [kthreadd] root 3 2 0 Sep05 ? 00:00:00 [migration/0] root 4 2 0 Sep05 ? 00:00:00 [ksoftirqd/0] root 5 2 0 Sep05 ? 00:00:00 [stopper/0] root 6 2 0 Sep05 ? 00:00:00 [watchdog/0] root 7 2 0 Sep05 ? 00:00:00 [migration/1] root 8 2 0 Sep05 ? 00:00:00 [stopper/1] root 9 2 0 Sep05 ? 00:00:00 [ksoftirqd/1] —————————————————————————————————————— UID:進程發起者的UID PID:進程號 PPID:進程的父進程ID號 C:CPU利用率,使用時間 STIME:進程的啟動時間,就是指從什么時候啟動的進程 TTY:登錄者的終端位置,遠程則顯示pts/N 本地則顯示ttyN,?代表是系統進程 TIME:進程實際花費CPU的運行時間,不是系統時間 CMD:觸發此進程的命令
pgrep命令:(基于ps aux顯示出來的結果過濾)
語法:pgrep [OPTIONS] “PATTERN”
選項:
-u uid: effective user,生效者
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
-l: 顯示進程名
-a: 顯示完整格式的進程名
-P pid: 顯示指定進程的子進程
-G GID|GROUPNAME 僅顯示以指定用戶組身份運行的進程(只指定該選項只會顯示出一列以該組身份運行的PID,配合-l選項使用,可顯示進程的PID和進程名)
pidof命令:根據進程名,取其PID(基于ps aux顯示出來的結果過濾,只顯示指定進程發起命令的PID)
2、top命令
top命令:
語法:top [OPTIONS]
選項:
-d 數字 指定刷新時間間隔
-n 數字 顯示多少次
-b 以批次顯示top的刷新,要和-n 數字 一起使用,指定要顯示多少批次
進入top命令顯示界面下常用的交互式的子命令:
M鍵:可以按內存占用百分比大小排序
P鍵:可以按CPU占用百分比大小排序,默認就是此項
T鍵:可以按累計占用CPU時長大小排序
q鍵:退出top交互式界面
k鍵:可kill某個進程,進入交互式殺死某個PID進程
s鍵:可指定刷新時間間隔,默認是3秒刷新一次
W鍵:將結果保存到/root/.toprc文件中
l鍵:是否顯示第一分欄的負載信息
t鍵:是否顯示第一分欄的CPU信息
m鍵:是否顯示定義芬蘭的內存相關信息
top命令顯示出來的內容的各個參數代表的意義
[root@localhost ~]# top -n 1 top - 01:44:06 up 10:15, 2 users, load average: 0.05, 0.04, 0.05 Tasks: 144 total, 1 running, 143 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1004136k total, 295800k used, 708336k free, 26872k buffers Swap: 1023996k total, 0k used, 1023996k free, 166232k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3700 root 20 0 15028 1152 836 R 2.0 0.1 0:00.01 top 1 root 20 0 19352 1548 1228 S 0.0 0.2 0:01.55 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd ————————————————————————————————————————— top - 01:44:06 up 10:15, 2 users, load average: 0.05, 0.04, 0.05 分別表示:系統當前時間;持續多長時間;當前有多少個用戶; 平均負載1、5、15分鐘的平均負載,是指cpu上等待運行的隊列長度的負載,一般不會超過1 如果每個CPU內核的當前活動進程數不大于3的話,那么系統的性能良好。 如果每個CPU內核的任務數大于5,那么這臺機器的性能有嚴重問題 如果linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使用了 不想顯示改行,就按l(小寫的L)鍵 利用uptime命令,顯示出來的結果就是該行的結果 Tasks: 144 total, 1 running, 143 sleeping, 0 stopped, 0 zombie 分別表示:總共的進程數,正在運行進程數,睡眠狀態進程數,停止狀態進程數,僵尸狀態進程數 Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 分別表示cpu的占用時長百分比: us-用戶空間占用百分比; sy-內核空間占用百分比; ni-調整nice值之后的進程占用的百分比; id-空閑百分比;wa-等待I/O完成的進程占用的百分比(該值大,代表硬盤速度慢); hi-為了處理硬件中斷占用的百分比; si-為了處理軟中斷占用的百分比; st-被偷走的百分比,例如啟動虛擬化后,虛擬化占用的cpu在主機看來就是被偷走的 如果有多個CPU,顯示的時候按1可以列出每顆CPU的占用情況,不想顯示CPU相關信息,就按t鍵 Mem: 1004136k total, 295800k used, 708336k free, 26872k buffers 分別表示內存占用的相關信息:總內存大??;已用內存大小,空閑內存大小,緩沖大小 (往硬盤上寫時,硬盤速度慢,故先放到內存緩沖,再往硬盤上寫; 或許多小數據集中放在內存中,然后集中的往硬盤寫,降低磁盤IO次數) 不想顯示內存和swap的信息可以按m鍵 Swap: 1023996k total, 0k used, 1023996k free, 166232k cached 表示swap交換分區的占用情況:總大小,已用大小,空閑大小, cache緩存大小,實際還是物理內存的cache,放在swap這里顯示而已 (硬盤上的數據往內存里存,方便CPU調用時的讀取速率) PID:進程號 USER:進程發起者 PR:進程優先級,越小優先級越高 NI:進程的nice值,越小優先級越高 VIRT:進程需要的虛擬內存大小,而非實際使用的虛擬內存大小 RES:進程當前使用的內存大小,不包括swap SHR:進程與其他進程共享的內存大小,可以通過RES-SHR來計算進程所占用的物理內存大小 S:進程的狀態 %CPU:CPU的占用率 %MEM:內存的占用率 TIME+:CPU使用時間的累加
3、htop命令:top命令的升級版,功能比top強大很多,默認沒安裝,只在epel yum源中有安裝包,支持鼠標操作
進入htop顯示界面后的子命令:
u 顯示指定用戶的進程
H 顯示或隱藏用戶的進程
K 顯示或隱藏系統內核的進程
M 可以按內存占用百分比大小排序
P 可以按CPU占用百分比大小排序,默認就是此項
T 可以按累計占用CPU時長大小排序
l 顯示進程所打開的文件列表
s 顯示進程執行的系統調用
a 綁定進程到指定的CPU上,如果不指定則由內核調度
數字 快速將光標定位至指定的PID進程上
F1 顯示幫助信息
F2 進入交互式選定第一分欄中要顯示的字段和字段內容的顯示格式
F3 搜索指定的內容
F4 過濾只顯示指定的內容
F5 以tree方式顯示進程的樹形關系
F6 指定排序的字段
4、kill命令
進程間通信(IPC):
同一主機進程間通信的幾種機制:
1、signal 信號
2、semaphore 旗語
3、share memory 共享內存
不同主機上的進程間通信機制:
1、跨主機的進程間通信 RPC (遠程過程調用)
2、socket 基于套接字通信,套接字就是IP和端口的集合
kill命令:能夠實現想起他進程發送信號,可使用的信號類型:(可用kill -l查看 或man 7 signal查看)
常用的信號有:
1信號 SIGHUP :通知程序重讀配置文件,而不必重啟程序來實現重讀配置文件
2信號 SIGINT :中斷信號,Ctrl+c就是發送此信號給進程
9信號 SIGKILL :殺死進程,直接殺死該進程
15信號 SIGTERM :終止進程,讓進程釋放資源后殺死該進程
向進程發信號的方法:
kill -SIGNAL PID kill 不指定發送哪個信號,則默認發送15信號
SIGNAL可以是:
數字代號,如1,9,15等
信號名稱,如SIGHUP等
簡寫的信號名稱,如HUP等
如:kill -15 3132 對PID為3132的進程發送15號信號
killall -SIGNAL 進程名
可以一次性對所有進程名為指定名稱的進程發送信號
如:
killall -15 httpd
第三章 內存監控類工具(vmstat、pmap)
1、vmstat命令
vmstat語法:
直接運行vmstat 顯示當前的系統相關的使用信息,顯示完成自動退出
vmstat 數字 表示指定多少秒鐘刷新一次,連續顯示系統相關的信息,不會自動退出
vmstat 數字1 數字2 表示指定數字1的秒數刷新一次,連續顯示數字2指定的次數后自動退出
vmstat -s 顯示內存使用的摘要統計信息
vmstat命令顯示內容詳解
[root@localhost ~]# vmstat 2 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 707328 27584 166352 0 0 1 0 13 4 0 0 100 0 0 0 0 0 707296 27584 166352 0 0 0 0 44 17 0 0 100 0 0 0 0 0 707264 27584 166352 0 0 0 0 40 15 0 0 100 0 0 0 0 0 707264 27584 166352 0 0 0 0 40 21 0 0 100 0 0 0 0 0 707264 27584 166352 0 0 0 0 53 16 0 0 100 0 0 [root@localhost ~]# —————————————————————————————————————————————————— procs:進程隊列 r:運行或等待CPU時間片的進程的個數(數值大,說明CPU不夠用,或者跑的進程過多) b:不可中斷睡眠的進程,被阻塞的進程隊列長度(通常為等待IO完成的應用) memory:內存的相關信息 swpd:從物理內存交換到swap上的數據量大?。ㄓ兄祷蛘咧荡?,說明物理內存不夠用) free:未使用的物理內存大小 buff:緩沖空間大小,通常與緩存寫操作相關 cache:緩存空間大小,通常與緩存讀操作相關 swap:swap分區的相關信息 si:swap in 從swap交換進內存的數據速率,通常是速率,kb/s so:swap out 從內存交換至swap的數據速率,通常是速率,kb/s io:跟磁盤IO相關的信息 bi:block in 從塊設備讀入內存的數據量,通常是速率,kb/s bo:block out 從內存讀出保存到塊設備的數據量,通常是速率,kb/s system:跟系統相關的信息 in:中斷發生速率,也就是每秒鐘產生的中斷次數 cs:context switch 上下文切換,也就是進程切換的速率,也就是每秒鐘切換的次數 cpu:跟cpu相關的信息(與top中的cpu的幾個指標類似) us:用戶空間占用的cpu的百分比 sy:系統內核空間占用的cpu的百分比 id:空閑的cpu百分比 wa:等待IO完成所消耗的cpu百分比 st:被偷走的cpu百分比(虛擬機偷走)
2、pmap命令:顯示指定PID進程所占用的內存地址空間的使用情況
如:pmap 10 顯示PID為10的進程所占用的內存的地址空間的情況
也可以用過cat /proc/進程號/maps 來查看,pmap實際就是抽取這個文件里面的信息進行顯示的
第四章 系統監控類工具(glances、dstat)
1、glances工具,系統上默認沒有安裝,需要通過EPEL源進行安裝,功能強大,支持C/S架構模式進行遠程查看
內建命令:跟htop類似,可通過h進行查看
命令的常用選項:
-b 以byte為單位顯示網上數據速率
-d 關閉磁盤I/O模塊
-m 關閉mount模塊
-n 關閉network模塊
-t 數字 設定刷新時間間隔
-1 每個cpu的相關數據單獨顯示
-o 指定將顯示結果輸出到文件中,可支持html格式或csv格式,一般與-f選項一起使用,指定輸出的路徑,如:
glances -o {HTML|CSV} -f /PATH/TO/SOMEDIR
只要glances不退出,輸出的文件就會一直更新
C/S模式下運行glances命令:
服務模式:
glances -s -B IPADDR -B指明本機所監聽的地址
客戶端模式:
glances -c IPADDR IPADDR為遠程服務器的地址
2、dstat命令,非常強大的工具,對系統各類資源進行統計,可以實時的監控cpu、磁盤、網絡、IO、內存等使用情況
語法:dstat [-afv] [options..] [delay [count]]
選項:
-c:顯示CPU系統占用,用戶占用,空閑,等待,中斷,軟件中斷等信息。
-C:當有多個CPU時候,此參數可按需分別顯示cpu狀態,
例:-C 0,1 是顯示cpu0和cpu1的信息。
-d:顯示磁盤讀寫數據大小。
-D sda,sdb,…total:顯示指定磁盤的使用情況
-n:顯示網絡狀態。
-N eth1,total:有多塊網卡時,指定要顯示的網卡。
-l:顯示系統負載情況。
-m:顯示內存使用情況。
-g:顯示內存頁面使用情況,顯示的是速率數據。
-p:顯示進程相關統計數據狀態。
-s:顯示swap交換分區使用情況。
-S:類似D/N。
-r:顯示I/O請求相關情況。
-y:系統狀態。
–ipc:顯示ipc進程間通信的相關數據,消息隊列,信號,旗語等信息。
–tcp 顯示tcp相關統計數據
–udp 顯示udp相關統計數據
–socket:用來顯示tcp udp端口狀態。
–top-cpu 顯示最占用CPU的進程
–top-mem 顯示最占用內存的進程
–top-io 顯示最占用I/O的進程
–top-latency 顯示延遲最大的進程
-a:此為默認選項,等同于-cdngy。
-v:等同于 -pmgdsc -D total。
–output 文件:此選項也比較有用,可以把狀態信息以csv的格式重定向到指定的文件中,以便日后查看。
例:
dstat –output /root/dstat.csv & 此時讓程序默默的在后臺運行并把結果輸出到/root/dstat.csv文件中
原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/44050