day26: 系统运维命令2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day26: 系统运维命令2相关的知识,希望对你有一定的参考价值。

1、iostat/iotop命令

默认这个命令没有安装,需要安装sysstat命令(同sar命令一起安装)

iostat这个命令用于查看系统的输入输出设备及cpu的使用情况,其特点是显示磁盘的读写情况及cpu的使用情况,同vmstat一样,iostat也有一个弱点,不能针对某个进程进行深入分析,只能系统的查看:

常用选项: -x

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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 [[email protected] ~]# 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的进程 [[email protected] ~]# 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 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)

其中STAT项一些符号的含义:

    + 前台进程

    < 高优先级进程

    N 低优先级进程

    L 内存中被锁了内存分页(极少出现)

    s 主进程





以上是关于day26: 系统运维命令2的主要内容,如果未能解决你的问题,请参考以下文章

Day10-2 日常运维 1

Linux系统运维基础管理命令总结

Python自动化运维课程学习--Day3

shell-day1

自动化运维+数据结构必会题,上岸必备,祝大家逢面必过

Linux运维之top命令解析