Linux之進程管理(2)相關命令之二
進程監控工具命令使用:uptime top vmstat pmap dstat
uptime 命令
uptime - Tell how long the system has been running.
顯示當前已經運行的時長及cpu核心處理狀態
說明:顯示系統當前時間,系統運行時長,以及當前上線人數,系統平均負載(一般按1、5、10分鐘的平均負載,一般不會超過1)。
選項及用法:
uptime [option]
-p, --pretty : 只顯示系統運行時長,以人性化顯示
-s, --since : 系統啓動時間,yyyy-mm-dd HH:MM:SS格式
注:只有uptime命令版本爲3.3.10及支持以上選項,可以使用uptime -V查看當前命令版本。
案例1:
[root@localhost ~]# uptime
15:38:42 up 1:12, 1 user, load average: 0.00, 0.01, 0.05
解析:這裏顯示當天的15:38:42開啓系統,到目前已經運行了1個小時12分鐘。同有一個用戶登錄。load average表示爲平均負載的活動進程數。
注:系統平均負載:
在特定時間間隔內運行隊列中的平均進程數,默認爲1、5、10分鐘之間。
生產環境中的例子:
1、如果每個CPU內存的當前活動進程數不大於3的話,那麼系統的性能良好。如果每個CPU內核的任務大於5,那麼說此機器的性能有嚴重問題。
2、如果linux主機是1個雙核CPU的話,當Load Average爲6的時候說明機器已經被充分使用了。
案例2:
#以人性化友好格式只顯示系統啓動時間
[root@localhost ~]# uptime -p up 1 hour, 33 minutes
#只顯示系統的運行時長
[root@localhost ~]# uptime -s 2016-09-09 14:26:01
#其實uptime顯示的就是w命令輸出的頭部
[root@mzf ~]# w 16:14:55 up 18:39, 2 users, load average: 0.00, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.1.250.34 05:25 3:51m 0.58s 0.58s -bash root pts/1 10.1.250.34 09:40 0.00s 0.20s 0.00s w
解析:這裏w顯示的頭部信息同樣和uptime顯示的數據一樣,都是顯示系統運行時間等。
top 命令
直接輸入top命令進入界面,展示信息詳解:
[root@mzf ~]# top
頭部信息解析(前幾行關於系統及進程總體數據):
第一行:看到第一行應該熟悉了,同uptime命令輸出的系統時長平均負載的等信息。
第二行:顯示當前進程的總量和個別程在什麼狀態(runing, sleeping, stoped, zombie)。
注意:總共有340個進程,一般情況下running 都是顯示1,cpu同一時間段只處理一個進程。而zombie爲0說明進程運作目前正常,如果不會1就要檢查是哪個進程處於僵死狀態,並對其進行清除。
第三行:當前 CPU的整體負載,如果是多核心的cpu,可以按數字1來切換成不同CPU的負載率。
例子(1):運行在單核心Cpu上,此時按1,Cpu(s)變成了Cpu0:
解析:之前此處顯示爲Cpu(s),現在只顯示了Cpu0,表示只要一個核心。
例子(2):運行在雙核心Cpu上,按1,會顯示多個核心的Cpu數據:
解析:這裏顯示了兩個Cpu條目,表示爲雙核心,顯示其中各自的運行比例。
Cpu後面的每個字段說明:
us:user space 用戶運行程序佔用CPU的百分比;
sy:system(kernel space)用於運行內核佔用的CPU百分比;
ni:nice用戶進程空間所改變過優先級的過程佔用CPU的百分比;
id:idle空閒CPU百分比;
wa:wait io 等待I/O花費時間;
hi:hard ware interrupt 硬件中斷佔用CPU的百分比;
si:software interrupt 軟鏈接中斷佔用的CPU百分比;
st:stolen,被虛擬機“偷走”的百分比;
第四行:表示物理內存的使用情況
第五行:表示交換分區的使用情況
第六行:這裏默認顯示空白,當在top程序當中輸入命令時,顯示結果狀態的地方,這裏可以輸入的命令有:
按條件排序顯示
P:根據CPU使用百分比大小進行排序
M:根據CPU使用百分比進行排序
T:根據累計時間進行排序
顯示和隱藏指定條目:
l:是否顯示平均負載和啓動時間
t:是否顯示CPU狀態相關信息
m:是否顯示內存(mem)相關信息
c:是否顯示完整的命令行(command)信息
操作命令:
q:退出top
k:終止某個進程
進程欄位信息列表信息:
PID:(Process Id)進程的ID
PPID:(Parent Process Pid)父進程ID
RUSER:(Real User Name)進程的所有者真是名稱
UID:(User Name)進程所有者名稱
GROUP:(User Name)任務所屬組名稱
TTY:(Controlling Tty)當前在哪個終端上運行
PR :(Priority)優先級
%CPU:(CPU usage):CPU使用率
%MEM:(Memory usage (RES))內存使用率
S:(Process Status):進程狀態
TIME+:(CPU Time, Hundredths):CPU時間,精確到秒
使用特定選項讓進程信息輸出到終端控制檯:
top 命令選項:
top [options]
-d #:指定延遲時長,單位爲妙
-b:batch批處理模式顯示
-n #:顯示的比例次數
vmstat 命令
vmstat - Report virtual memory statistics
報告信息流程、內存、分頁塊IO、陷阱、磁盤和cpu活動。
命令使用及選項:
vmstat [options ] [delay [count]]
delay - 更新系統報告的延遲期限,單位爲秒
count - 總共進行幾次更新打印,默認不指定爲無限循環更新打印
-s - 直接顯示統計數據列表
案例介紹:
#直接輸入vmstat顯示實時信息
[root@localhost ~]# vmstat
重要信息格式解析:
procs:
r:等待運行的進程的個數,和核心數有關
b:處於不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
memory:
swpd: 交換內存的使用總量
free:空閒物理內存總量
buffer:用於buffer的內存總量
cache:用於cache的內存總量
swap:
si:從磁盤交換進內存的數據速率(kb/s)
so:從內存交換至磁盤的數據速率(kb/s)
io:
bi:從塊設備讀入數據到系統的速率(kb/s)
bo: 保存數據至塊設備的速率
注意:這裏的swap並不是指文件系統裏的交換內存使用狀況,而是內存數據和磁盤數據之間讀寫的相互轉換:
1、證明si內存從磁盤中交換
#下面驗證信息,再次打開一個終端連接,使用dd命令將磁盤數據寫入到內存:
[root@localhost ~]# dd if=/dev/sda of=/dev/null bs=1024M count=1
#輸入此命令之後在另一終端查看vmstat更新屬性(每2s更新,更新10次):
[root@localhost ~]# vmstat 2 10
解析:這裏發現內存從硬盤接收數據,就是說明了swap中的si表示爲內存從磁盤中接收。
2、證明so內存數據交換到磁盤
#同樣再次進行dd命令將內存數據寫入文件:
[root@localhost ~]# dd if=/dev/zero of=/tmp/tempfile bs=1024M count=1
#再次打開vmstate顯示swap信息
[root@localhost ~]# vmstat 2 10
解析:這裏同樣顯示了si的數據在瘋狂提高,說明,內存中正有數據在寫入磁盤,也就是所謂的內存數據交換到磁盤。
3、顯示內存及I/O數據等統計數據列表
[root@localhost ~]# vmstat -s
pmap 命令
pmap - report memory map of a process
打印進程對應的映射表(注:也可以打開/proc/PID/map來查看進程對應的映射)
使用方法:
pmap [options] pid ...
-x :顯示所有詳細格式信息
案例介紹:
#查看crond的pid
[root@localhost ~]# ps -C crond -o pid= | tr -cd '[0-9]\n' 778
#查看crond的pid(778)的內存映射信息
[root@localhost ~]# pmap 778
dstat 命令
dstat - versatile tool for generating system resource statistics
多功能系統資源生成統計工具(多顏色的字符顯示)
使用格式:
dstat [-afv] [options..] [delay [count]]
-c: 顯示cpu相關信息
-C #,#,...,total
-d: 顯示disk相關信息
-D total,sda,sdb,...
-g:顯示page相關統計數據
-m: 顯示memory相關統計數據
-n: 顯示network相關統計數據
-p: 顯示process相關統計數據
-r: 顯示io請求相關的統計數據
-s: 顯示swapped相關的統計數據
--tcp: 顯示tcp相關進程
--udp: 顯示udp相關進程
--unix: 顯示內核相關進程
--raw: 顯示無狀態raw進程
--socket: 顯示套接字狀態
--ipc: 顯示ipc信息
--top-cpu:顯示最佔用CPU的進程
--top-io: 顯示最佔用io的進程
--top-mem: 顯示最佔用內存的進程
--top-latency: 顯示延遲最大的進程
查看顯示:
#每2秒更新一次數據,共顯示10次
[root@mzf ~]# dstat 2 10
解析:如果不知道更新次數,和vmstat命令一樣會無限循環更新,這裏顯示的內容比vmastat更加豐富,而且支持ps命令裏的列出的幾種進程類型選項。