Linux之進程管理(2)相關命令之二

Linux之進程管理(2)相關命令之二

進程監控工具命令使用:uptime  top  vmstat  pmap  dstat

uptime  命令

uptime - Tell how long the system has been running.

顯示當前已經運行的時長及cpu核心處理狀態

說明:顯示系統當前時間,系統運行時長,以及當前上線人數,系統平均負載(一般按1510分鐘的平均負載,一般不會超過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表示爲平均負載的活動進程數。

注:系統平均負載:

在特定時間間隔內運行隊列中的平均進程數,默認爲1510分鐘之間。

生產環境中的例子:

1、如果每個CPU內存的當前活動進程數不大於3的話,那麼系統的性能良好。如果每個CPU內核的任務大於5,那麼說此機器的性能有嚴重問題。

2、如果linux主機是1個雙核CPU的話,當Load Average6的時候說明機器已經被充分使用了。

案例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

wKiom1fVHfzxExdkAAAbyuSrCwo588.png

頭部信息解析(前幾行關於系統及進程總體數據):

第一行:看到第一行應該熟悉了,同uptime命令輸出的系統時長平均負載的等信息。

第二行:顯示當前進程的總量和個別程在什麼狀態(runing, sleeping, stoped, zombie)

注意:總共有340個進程,一般情況下running 都是顯示1cpu同一時間段只處理一個進程。而zombie0說明進程運作目前正常,如果不會1就要檢查是哪個進程處於僵死狀態,並對其進行清除。

第三行:當前 CPU的整體負載,如果是多核心的cpu,可以按數字1來切換成不同CPU的負載率。

例子(1):運行在單核心Cpu上,此時按1Cpu(s)變成了Cpu0

wKioL1fVHgzBHwcqAAANWcnvMAE946.png 

解析:之前此處顯示爲Cpu(s),現在只顯示了Cpu0,表示只要一個核心。

例子(2):運行在雙核心Cpu上,按1,會顯示多個核心的Cpu數據:

wKioL1fVHhbwmLJdAAAGdd2RlLw968.png 

解析:這裏顯示了兩個Cpu條目,表示爲雙核心,顯示其中各自的運行比例。

 

Cpu後面的每個字段說明:

ususer space 用戶運行程序佔用CPU的百分比;

sysystem(kernel space)用於運行內核佔用的CPU百分比;

ninice用戶進程空間所改變過優先級的過程佔用CPU的百分比;

ididle空閒CPU百分比;

wawait io 等待I/O花費時間;

hihard ware interrupt 硬件中斷佔用CPU的百分比;

sisoftware interrupt 軟鏈接中斷佔用的CPU百分比;

ststolen,被虛擬機“偷走”的百分比;

第四行:表示物理內存的使用情況

第五行:表示交換分區的使用情況

第六行:這裏默認顯示空白,當在top程序當中輸入命令時,顯示結果狀態的地方,這裏可以輸入的命令有:

    按條件排序顯示

P:根據CPU使用百分比大小進行排序

M:根據CPU使用百分比進行排序

T:根據累計時間進行排序

 

顯示和隱藏指定條目:

l:是否顯示平均負載和啓動時間

t:是否顯示CPU狀態相關信息

m:是否顯示內存(mem)相關信息

c:是否顯示完整的命令行(command)信息

操作命令:

q:退出top

k:終止某個進程

 

進程欄位信息列表信息:

wKiom1fVHibQuYZdAAAW03bT_WU559.png 

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  #:指定延遲時長,單位爲妙

-bbatch批處理模式顯示

-n  #:顯示的比例次數

 

 

vmstat 命令

vmstat - Report virtual memory statistics

報告信息流程、內存、分頁塊IO、陷阱、磁盤和cpu活動。 

命令使用及選項:

vmstat  [options ]  [delay  [count]]

delay   -    更新系統報告的延遲期限,單位爲秒

count   -    總共進行幾次更新打印,默認不指定爲無限循環更新打印

-s   -    直接顯示統計數據列表

 

案例介紹:

#直接輸入vmstat顯示實時信息

[root@localhost ~]# vmstat

wKiom1fVHkLxdVpYAAAOGq0KDsc835.png 

重要信息格式解析:

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

wKioL1fVHnzSX0DHAAAu9bCG5RM670.png 

解析:這裏發現內存從硬盤接收數據,就是說明了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

wKioL1fVHr_g7v2wAAAmXT3rOTU038.png 

解析:這裏同樣顯示了si的數據在瘋狂提高,說明,內存中正有數據在寫入磁盤,也就是所謂的內存數據交換到磁盤。

 

3、顯示內存及I/O數據等統計數據列表

[root@localhost ~]# vmstat -s

wKiom1fVHs6zqivlAAAv4KoCIGw599.png 

 

 

pmap 命令

pmap - report memory map of a process

打印進程對應的映射表(注:也可以打開/proc/PID/map來查看進程對應的映射)

使用方法:

pmap  [options]  pid  ...

         -x :顯示所有詳細格式信息

 

案例介紹:

#查看crondpid

[root@localhost ~]# ps -C crond -o pid= | tr -cd '[0-9]\n' 
778

#查看crondpid(778)的內存映射信息

[root@localhost ~]# pmap  778

wKioL1fVHvrA93EBAAAd3M234_k135.png 

 

 

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

wKiom1fVHw2TAFjTAAAjcrLDaFU049.png 

 解析:如果不知道更新次數,和vmstat命令一樣會無限循環更新,這裏顯示的內容比vmastat更加豐富,而且支持ps命令裏的列出的幾種進程類型選項。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章