day26:系統運維命令2

餘二五發表於2017-11-15

1、iostat/iotop命令

預設這個命令沒有安裝,需要安裝sysstat命令(同sar命令一起安裝)

iostat這個命令用於檢視系統的輸入輸出裝置及cpu的使用情況,其特點是顯示磁碟的讀寫情況及cpu的使用情況,同vmstat一樣,iostat也有一個弱點,不能針對某個程式進行深入分析,只能系統的檢視:

常用選項: -x

1
2
3
4
5
6
[root@localhost ~]# iostat -x /dev/sda
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年01月23日 _x86_64_        (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.15    0.05    0.00   99.76
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.01    0.10    0.05     3.89     3.42    99.74     0.01   48.01   21.97  100.13   8.00   0.12

我們主要重點關注%util這一項,表示被I/O消耗的cpu百分比(I/O有多長時間在佔用CPU的),如果這個值特別大,說明磁碟i/0很差(很忙碌),則需要檢查是那些程式在頻繁的讀寫:

   這個時候,我們需要用到iotop命令:

安裝:  yum  install  -y   iotop

[root@localhost ~]# iotop          #動態排序顯示

 Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s

Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s

   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND

     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % syst~ze 21

     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]

     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kso~qd/0]

在iotop的執行結果中,可以很直觀顯示那些程式在對磁碟進行讀寫,並且會動態的排序:

可以使用快捷鍵“o”來顯示只有I/O輸出的程式:

2. free命令

    free命令可以顯示當前系統未使用的和已使用的記憶體數目,還可以顯示被核心使用的記憶體緩衝區。

    常用選項 -h

Python

[root@localhost ~]# free -h             total       used       free     shared    buffers     cached Mem:          979M       533M       446M       6.6M       9.8M       228M -/+ buffers/cache:       295M       684M Swap:         2.0G         0B       2.0G

1

2

3

4

5

[root@localhost ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          979M       533M       446M       6.6M       9.8M       228M

/+ buffers/cache:       295M       684M

Swap:         2.0G         0B       2.0G

    可以很直觀的顯示各項資料的大小

公式:total=used + free + buffers + cache

    total:記憶體總數;
    used:已經使用的記憶體數;
    free:空閒的記憶體數;
    shared:當前已經廢棄不用;
    buffers:快取記憶體數;
    cached:快取記憶體數。

    在CentOS 7.2+版本,free -h的結果如下:

Python

[root@chengzi ~]# free -h              total        used        free      shared  buff/cache   available Mem:           994M        369M        153M         50M        470M        407M Swap:          999M        304M        695M

1

2

3

4

[root@chengzi ~]# free -h

              total        used        free      shared  buff/cache   available

Mem:           994M        369M        153M         50M        470M        407M

Swap:          999M        304M        695M

    我們只需要關注available的值,它包含free和buffer/cache剩餘部分,即就是真實的剩餘實體記憶體。

3. ps命令

    ps命令是Process Status的縮寫。ps命令用來列出系統中當前執行的那些程式。ps命令列出的是當前那些程式的快照,就是執行ps命令的那個時刻的那些程式,如果想要動態的顯示程式資訊,就可以使用top命令。

linux上程式有5種狀態: 

    1. R 執行 runnable (on run queue)(正在執行或在執行佇列中等待) 

    2. S 中斷 sleeping (休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 

    3. D 不可中斷 uninterruptible sleep (usually IO) (收到訊號不喚醒和不可執行, 程式必須等待直到有中斷髮生)

    D狀態的程式很少見,但也可以人為設定,這類程式非常佔用系統CPU資源,會使得CPU的load average 變高,而CPU的使用率卻體現不高。

    4. Z 僵死a defunct (”zombie”) process  (程式已終止, 但程式描述符存在, 直到父程式呼叫wait4()系統呼叫後釋放) 

    5. T 停止 traced or stopped(程式收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行)

    T 狀態的程式也可以人為操作,如vmstat 

Python

[root@chengzi ~]# vmstat 2 procs ———–memory———- —swap– —–io—- -system– ——cpu—– r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 8  0 312100 139868      0 490508    0    0     1     1    0    1  1  0 99  0  0 0  0 312100 139868      0 490508    0    0     0     0  123  124  0  0 100  0  0 0  0 312100 139868      0 490508    0    0     0     0  117  105  0  0 100  0  0 ^Z [1]+  Stopped                 vmstat 2   #使用Ctrl+Z暫停程式,可以檢視vmstat的狀態為T [root@chengzi ~]# ps aux |grep vmstat root     12893  0.0  0.1 148308  1352 pts/1    T    09:48   0:00 vmstat 2 root     12895  0.0  0.0 112648   952 pts/1    S+   09:48   0:00 grep –color=auto vmstat

1

2

3

4

5

6

7

8

9

10

11

[root@chengzi ~]# vmstat 2

procs memory swap io system cpu

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

8  0 312100 139868      0 490508    0    0     1     1    0    1  1  0 99  0  0

0  0 312100 139868      0 490508    0    0     0     0  123  124  0  0 100  0  0

0  0 312100 139868      0 490508    0    0     0     0  117  105  0  0 100  0  0

^Z

[1]+  Stopped                 vmstat 2   #使用Ctrl+Z暫停程式,可以檢視vmstat的狀態為T

[root@chengzi ~]# ps aux |grep vmstat

root     12893  0.0  0.1 148308  1352 pts/1    T    09:48   0:00 vmstat 2

root     12895  0.0  0.0 112648   952 pts/1    S+   09:48   0:00 grep color=auto vmstat

    (測試完後,可以用fg命令將vmstat恢復到前臺顯示)

常用引數:-aux 顯示所有包含其他使用者的行程

Python

# 檢視php的程式 [root@chengzi ~]# ps aux |grep `php` USER       PID %CPU %MEM   VSZ    RSS TTY     STAT  START   TIME   COMMAND nginx     1075  0.0  1.1 308456 11832 ?        S    Nov04   0:18 php-fpm: pool blog nginx     1076  0.0  2.1 318824 22088 ?        S    Nov04   0:19 php-fpm: pool blog nginx     1077  0.0  1.9 316356 19720 ?        S    Nov04   0:16 php-fpm: pool blog nginx     1078  0.0  1.1 308516 11932 ?        S    Nov04   0:18 php-fpm: pool blog nginx     1079  0.0  2.3 320960 24240 ?        S    Nov04   0:19 php-fpm: pool blog nginx     1080  0.0  1.1 308056 11480 ?        S    Nov04   0:15 php-fpm: pool blog nginx     1081  0.0  2.5 322920 26184 ?        S    Nov04   0:17 php-fpm: pool blog nginx     1083  0.0  1.9 316672 19836 ?        S    Nov04   0:16 php-fpm: pool blog root     12885  0.0  0.0 112648   952 pts/1    R+   09:40   0:00 grep –color=auto php root     20922  0.0  0.1 225668  1092 ?        Ss   Mar06  84:30 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

1

2

3

4

5

6

7

8

9

10

11

12

13

# 檢視php的程式

[root@chengzi ~]# ps aux |grep `php`

USER       PID %CPU %MEM   VSZ    RSS TTY     STAT  START   TIME   COMMAND

nginx     1075  0.0  1.1 308456 11832 ?        S    Nov04   0:18 phpfpm: pool blog

nginx     1076  0.0  2.1 318824 22088 ?        S    Nov04   0:19 phpfpm: pool blog

nginx     1077  0.0  1.9 316356 19720 ?        S    Nov04   0:16 phpfpm: pool blog

nginx     1078  0.0  1.1 308516 11932 ?        S    Nov04   0:18 phpfpm: pool blog

nginx     1079  0.0  2.3 320960 24240 ?        S    Nov04   0:19 phpfpm: pool blog

nginx     1080  0.0  1.1 308056 11480 ?        S    Nov04   0:15 phpfpm: pool blog

nginx     1081  0.0  2.5 322920 26184 ?        S    Nov04   0:17 phpfpm: pool blog

nginx     1083  0.0  1.9 316672 19836 ?        S    Nov04   0:16 phpfpm: pool blog

root     12885  0.0  0.0 112648   952 pts/1    R+   09:40   0:00 grep color=auto php

root     20922  0.0  0.1 225668  1092 ?        Ss   Mar06  84:30 phpfpm: master process (/usr/local/php/etc/phpfpm.conf)

其中STAT項一些符號的含義:

    + 前臺程式

    < 高優先順序程式

    N 低優先順序程式

    L 記憶體中被鎖了記憶體分頁(極少出現)

    s 主程式

本文轉自 芬野 51CTO部落格,原文連結:http://blog.51cto.com/yuanhaohao/2064480,如需轉載請自行聯絡原作者


相關文章