• linux命令之系统管理命令(上)


    1.lsof:查看进程打开的文件

    该命令可以列举系统中已经被打开的文件,可以根据文件找到对应的进程信息,同时也可以根据进程信息找到进程打开的文件

    参数 说明
    -c 进程名 显示指定的进程名打开的文件
    -p 进程号 显示指定进程号打开的文件
    -u  显示指定用户使用的文件
    -i  通过监听指定的协议,端口和主机,显示符合条件的进程信息

    示例:

    1)显示使用文件的进程

    [root@boxiaoyuan ~]# lsof /var/log/messages
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
    rsyslogd 2086 root    1w   REG    8,2    13184 686170 /var/log/messages

    说明:如上所示,使用messages文件的进程为rsyslogd进程。

    COMMAND:进程的名称;PID:进程号;USER:进程的所有者;FD:文件描述符(0表示标准输出,1表示标准输入,2表示标准错误,u表示该文件被打开并处于/读取/写入模式,r表示改文件被打开并处于只读模式,w表示该文件被打开并处于写入模式);TYPE:文件类型,REG为普通文件;DEVICE:磁盘的名称;SIZE/OFF:文件的大小;NODE:索引节点;NAME:文件名。

    2)显示指定进程打开的文件,使用-c选项

    [root@boxiaoyuan ~]# lsof -c rsyslogd
    COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF       NODE NAME
    rsyslogd 2086 root  cwd    DIR                8,2     4096          2 /
    rsyslogd 2086 root  rtd    DIR                8,2     4096          2 /
    rsyslogd 2086 root  txt    REG                8,2   391360     409835 /sbin/rsyslogd
    ...

    3)显示指定进程号所打开的文件,使用-p选项

    [root@boxiaoyuan ~]# lsof -p 2086
    COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF       NODE NAME
    rsyslogd 2086 root  cwd    DIR                8,2     4096          2 /
    rsyslogd 2086 root  rtd    DIR                8,2     4096          2 /
    rsyslogd 2086 root  txt    REG                8,2   391360     409835 /sbin/rsyslogd
    ...

     4)显示指定用户使用的文件,使用-u选项

    [root@boxiaoyuan ~]# lsof -u root | more 10
    COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init          1 root  cwd       DIR                8,2     4096          2 /
    init          1 root  rtd       DIR                8,2     4096          2 /
    init          1 root  txt       REG                8,2   150352     397555 /sbin/init
    ...

    5)监听指定的协议,端口号和主机,显示符合条件的进程信息

    lsof -i [46] [protocol][@hostname][:service|port]

    说明:

    46:4代表IPv4,6代表IPv6。

    protocol:表示传输协议,可以是TCP或者UDP。

    hostname:表示主机名或者IP地址。

    service:进程的服务名,如NFS,SSH等。

    port:表示端口号,如HTTP服务默认的端口号为80,SSH服务默认的端口号为22。

    [root@boxiaoyuan ~]# lsof -i :22  # 显示端口22对应的进程,此命令很常用
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     2468 root    3u  IPv4  15855      0t0  TCP *:ssh (LISTEN)
    sshd     2468 root    4u  IPv6  15869      0t0  TCP *:ssh (LISTEN)
    sshd    76600 root    3r  IPv4 180345      0t0  TCP 192.168.13.128:ssh->192.168.13.1:12793 (ESTABLISHED)

    2.uptime:显示系统的运行时间及负载

    该命令可以输出系统的当前时间,系统从开机到现在的运行时间,当前有多少用户在线和系统平均负载等信息。

    示例:

    1)显示系统的运行时间和平均负载等信息。

    [root@boxiaoyuan ~]# uptime
     16:35:02 up 19:21,  3 users,  load average: 0.12, 0.35, 0.43
      系统时间   运行时长 当前登录用户数   平均负载     1min 5min 15min

    3.free:查看系统内存信息

    该命令可以显示系统内存信息,包括物理内存,虚拟内存,共享内存和系统缓存等。

    参数 说明
    -m(常用) 以MB为单位显示内存的使用情况
    -h(常用) 以人类可读的形式显示内存的使用情况
    -s(常用) 根据指定的间隔秒数持续显示内存的使用情况

    1)查看系统内存

    [root@boxiaoyuan ~]# free -m  # 以MB为单位显示内存的使用情况
                 total       used       free     shared    buffers     cached
    Mem:          1861       1637        223          6         27        286
    -/+ buffers/cache:       1323        537
    Swap:         8191        454       7737
    [root@boxiaoyuan ~]# free -h  # 使用-h根据实际大小自动转换为MB,KB单位
                 total       used       free     shared    buffers     cached
    Mem:          1.8G       1.6G       223M       6.6M        27M       286M
    -/+ buffers/cache:       1.3G       537M
    Swap:         8.0G       454M       7.6G
    [root@boxiaoyuan ~]# 

     说明:上面所示,系统真正的可用内存为537M,buffers表示写入数据缓冲区,cache表示读取数据缓存区。

    2)定时查询内存

    [root@boxiaoyuan ~]# free -h -s 10
                 total       used       free     shared    buffers     cached
    Mem:          1.8G       1.6G       222M       6.6M        28M       286M
    -/+ buffers/cache:       1.3G       537M
    Swap:         8.0G       454M       7.6G
    
                 total       used       free     shared    buffers     cached
    Mem:          1.8G       1.6G       222M       6.6M        28M       286M
    -/+ buffers/cache:       1.3G       537M
    Swap:         8.0G       454M       7.6G

    4.iftop:动态显示网络接口流量信息

    该命令可用于监控TCP/IP连接,需要以root用户运行,该命令在最小安装包中不存在,需要额外安装。

    [root@boxiaoyuan ~]# iftop
    -bash: iftop: command not found
    [root@boxiaoyuan ~]# yum install iftop -y
    ...
    参数 说明
    -i(常用) 指定监控的网络端口
    -n(常用) 不进行DNS解析
    -N(常用) 不将端口号解析成服务名
    -B(常用) 以字节为单位显示流量
    -P(常用) 显示端口号

    常用命令组合:iftop -nNBP

    TX:发送的流量;RX:接收的流量;TOTAL:总流量;Cum:运行iftop到目前为止的总流量;peak:流量峰值;rates:过去2s、10s、40s的平均流量。

    命令说明:

    -n:不进行DNS解析,显示IP数字地址。

    N:显示数字形式的端口号

    B:以字节形式为单位

    P:显示端口号

    5.vmstat:虚拟内存统计

    该命令可以对操作系统的内存信息,进程状态,CPU活动等进行监视,但是只能对系统的整体情况进行统计,无法对某个具体进程进行分析。

    vmstat 【option】 【delay [count]】

    常用参数为s,表示显示内存相关统计信息及所有的系统活动数量。

    示例:

    1)显示虚拟内存的使用情况

    [root@boxiaoyuan ~]# vmstat
    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 479872 247808  27084 294052    2    7    70    47  113  224  1  1 97  1  0

    procs 显示进程相关信息:

    r :表示运行队列中的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

    b :表示等待资源的进程数(阻塞的进程数),比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

    memory 内存相关信息:

    swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了 ;

    free :空闲物理内存量(不含buffer和cache);

    buf:内存中的buffers使用量;

    cache :内存中的cache使用量;

    swap 内存交换情况:

    si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了;

    so :每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上;

    io 磁盘使用情况:

    bi :从块设备读取数据的总量(读磁盘);

    bo: 从块设备写入数据的总量(写磁盘);

    system 显示采集间隔内发生的中断数:

    in :表示在某一时间间隔中观测到的每秒设备中断数;

    cs :表示每秒产生的上下文切换次数;

    CPU 显示cpu的使用状态:

    us :用户进程 cpu消耗时间的百分比;

    sy :内核(系统)进程cpu消耗时间百分比;

    id :表示cpu处于空闲状态的时间百分比;

    wa :表示I/O等待时间百分比;

    st :虚拟机管理程序占用时间百分比(一般都为0,不用关注);

    注:以上所介绍的各个参数中,经常会关注r列,b列和wa列IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

    2)查看内存使用的详细信息

    [root@boxiaoyuan ~]# vmstat -s
          1906280  total memory
          1659124  used memory
          1014932  active memory
           415248  inactive memory
           247156  free memory
    ...

    6.mpstat:CPU信息统计

    该命令可以输出CPU的一些统计信息,可以查看多CPU中每个计算核心的统计数据。

    mpstat 【option】 【delay [count]】

    -P选项可以用来指定CPU编号,如-P表示第一个CPU。

    [root@boxiaoyuan ~]# mpstat
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月09日  _x86_64_        (1 CPU)
    
    19时08分19秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    19时08分19秒  all    1.20    0.01    0.67    1.37    0.00    0.06    0.00    0.00   96.69

    说明:

    %usr     表示用户进程所消耗的CPU时间百分比

    %nice    表示修改过优先级的进程占用的 CPU 时间百分比

    %sys     表示内核(系统)进程消耗的 CPU时间 百分比

    %iowait  表示I/O等待占用的的 CPU 时间百分比

    %irq     表示硬中断占用的CPU时间百分比

    %soft     表示软中断的 CPU 时间百分比

    %steal    表示虚拟机强制CPU等待的时间百分比

    %guest   表示虚拟机占用CPU时间的百分比

    %idle     显示 CPU 的空闲状态的时间百分比

    %intr/s   显示每秒 CPU 接收的中断总数

    7.iostat:I/O信息统计

    该命令主要对系统的磁盘I/O操作进行监视,输出主要显示磁盘读写操作的统计信息,同时也会给出CPU的使用情况,该命令和vmstat一样,只能对系统整体情况进行分析。

    iostat [option] [interval[count]]

    常用参数为-c:显示CPU的使用情况;-d:显示磁盘的使用情况。

    [root@boxiaoyuan ~]# iostat 
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月09日  _x86_64_        (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.19    0.01    0.72    1.36    0.00   96.72
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda               2.94       133.39        90.52   10455482    7095512

    avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值

    Device: 各磁盘设备的IO统计信息

    对于cpu统计信息一行,我们主要看iowait的值,它指示cpu用于等待io请求完成的时间

    Device中各列含义如下:

    Device: 以sdX形式显示的设备名称

    tps: 每秒进程下发的IO读、写请求数量

    Blk_read/s: 每秒读扇区数量(一扇区为512bytes)

    Blk_wrtn/s: 每秒写扇区数量

    Blk_read: 取样时间间隔内读扇区总数量

    Blk_wrtn: 取样时间间隔内写扇区总数量

    8.iotop:动态显示磁盘的I/O统计信息

    该命令可以方便的查看每个进程使用磁盘I/O的情况,需要使用root用户运行,最小化系统中没有安装该命令,需要使用进行额外安装。

    [root@boxiaoyuan ~]# iotop
    -bash: iotop: command not found
    [root@boxiaoyuan ~]# yum install iotop -y
    ...

    该命令的常用参数为-o:显示正在使用I/O的进程或者线程,默认显示所有;-p:只显示指定的PID的信息。

    [root@boxiaoyuan ~]# iotop
    Total DISK READ: 0.00 B/s | Total 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 % init
        2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
        3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
        4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]

    说明:

    Total DISK READ:总的磁盘读取速度;Total DISK WRITE:总的磁盘写入速度;TID:进程的Pid值;PRIO:优先级;USER:用户;DISK READ:磁盘读取速度;DISK WRITE:磁盘写入速度;SWAPIN:从swap分区读取数据占用的百分比;IO:I/O占用的百分比;COMMAND:消耗I/O的进程名。

    9.sar:收集系统信息

    该命令可以全面的获取系统的CPU,运行队列,磁盘I/O,分页(交换区),内存、CPU中断和网络等性能数据。

     sar [option] [interval [count]]

    参数 说明
    -u(常用) 显示系统所有CPU在采样时间内的负载状态
    -d(常用) 显示系统所有硬盘设备在采样时间内的使用状况
    -r(常用) 显示在采样时间内系统内存的使用状况
    -b(常用) 显示在采样时间内缓冲区的使用情况
    -q(常用) 显示运行队列的大小,它与系统当时的平均负载相同
    -n(常用) 显示网络运行状况

     

     

     

     

     

     

    示例:

    1)查看系统CPU的整体负载情况

    [root@centos76 ~]# sar -u 2 3
    Linux 4.20.13-1.el7.elrepo.x86_64 (centos76)    04/10/2019      _x86_64_       (1 CPU)
    
    12:36:32 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    12:36:34 PM     all      7.85      0.00      5.82      0.00      0.00     86.33
    12:36:36 PM     all      8.16      0.00      5.10      0.00      0.00     86.73
    12:36:38 PM     all      8.61      0.00      5.57      0.00      0.00     85.82
    Average:        all      8.21      0.00      5.50      0.00      0.00     86.29
    [root@centos76 ~]# 

    说明:

    %user     表示用户进程所消耗的CPU时间百分比

    %nice    表示修改过优先级的进程占用的 CPU 时间百分比

    %system   表示内核(系统)进程消耗的 CPU时间 百分比

    %iowait  表示I/O等待占用的的 CPU 时间百分比

    %steal    表示虚拟机强制CPU等待的时间百分比

    %idle     显示 CPU 处于空闲状态的时间百分比

    2)显示运行队列的大小

    [root@boxiaoyuan ~]# sar -q 2 3
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月10日  _x86_64_        (1 CPU)
    
    12时46分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
    12时46分03秒         0       406      1.54      1.16      0.90
    12时46分05秒         0       406      1.54      1.16      0.90
    12时46分07秒         0       406      1.54      1.16      0.90
    平均时间:         0       406      1.54      1.16      0.90

    说明:

    runq-sz 表示等待运行的进程数

    plist-sz 表示进程列表中进程和线程的数量

    ldavg-1 表示最后一分钟的系统平均负载

    ldavg-5 表示过去5分钟的系统平均负载

    ldavg-15 表示过去15分钟的系统平均负载

    3)显示系统的内存使用情况

    [root@boxiaoyuan ~]# sar -r 2 3
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月10日  _x86_64_        (1 CPU)
    
    12时46分55秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    12时46分57秒    125500   1780780     93.42     42576    358072   3314308     32.19
    12时46分59秒    125500   1780780     93.42     42576    358072   3314308     32.19
    12时47分01秒    125500   1780780     93.42     42576    358072   3314308     32.19
    平均时间:    125500   1780780     93.42     42576    358072   3314308     32.19

    说明:

    kbmemfree  表示空闲的物理内存量

    kbmemused  表示使用中的物理内存量

    %memused 表示物理内存的使用率

    kbbuffers  内核中作为缓冲区使用的物理内存容量

    kbcached 内核中作为缓存区使用的物理内存容量

    kbcommit   应用程序当前使用的内存大小

    %commit 应用程序当前使用的内存大小占总的内存大小的百分比

    4)显示缓冲区的使用情况

    [root@boxiaoyuan ~]# sar -b 2 3
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月10日  _x86_64_        (1 CPU)
    
    12时52分54秒       tps      rtps      wtps   bread/s   bwrtn/s
    12时52分56秒      4.57      0.00      4.57      0.00     40.61
    12时52分58秒      0.00      0.00      0.00      0.00      0.00
    12时53分00秒      0.00      0.00      0.00      0.00      0.00
    平均时间:      1.52      0.00      1.52      0.00     13.49

    说明:

    tps 表示每秒钟物理设备的IO传输总量

    rtps  表示每秒钟从物理设备读入的数量总量

    wtps 表示每秒钟向物理设备写入的数据总量

    bread/s 表示每秒钟从物理设备读入的数据量,块/s

    bwrtn/s 表示每秒钟向物理设备写入的数据量,块/s

    5)显示网络的运行状态

    [root@boxiaoyuan ~]# sar -n DEV 2 3
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月10日  _x86_64_        (1 CPU)
    
    13时25分03秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    13时25分05秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分05秒      eth0      0.51      0.00      0.03      0.00      0.00      0.00      0.00
    13时25分05秒      pan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分05秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    13时25分05秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    13时25分07秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分07秒      eth0      1.01      0.51      0.06      0.31      0.00      0.00      0.00
    13时25分07秒      pan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分07秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    13时25分07秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    13时25分09秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分09秒      eth0      0.51      0.51      0.03      0.31      0.00      0.00      0.00
    13时25分09秒      pan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    13时25分09秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    平均时间:      eth0      0.68      0.34      0.04      0.21      0.00      0.00      0.00
    平均时间:      pan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    平均时间:   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

    说明:

    IFACE  表示网络接口

    rxpck/s  每秒钟接收的数据包

    txpck/s  每秒钟发送的数据包

    rxkB/s  每秒钟接收的字节数

    txkB/s  每秒钟发送的字节数

    rxcmp/s  每秒钟接收的压缩数据包

    txcmp/s  每没中发送的压缩数据包

    rxmcst/s  每秒钟接收的多播数据包

    6)查看系统磁盘的读写性能

    [root@boxiaoyuan ~]# sar -d 2 3
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年04月10日  _x86_64_        (1 CPU)
    
    13时30分53秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    13时30分55秒    dev8-0      1.02      0.00     12.18     12.00      0.01      9.50      9.50      0.96
    
    13时30分55秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    13时30分57秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    13时30分57秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    13时30分59秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    平均时间:       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    平均时间:    dev8-0      0.34      0.00      4.05     12.00      0.00      9.50      9.50      0.32

    说明:

    DEV 表示磁盘的设备名称

    tps  表示设备每秒的传输次数

    rd_sec/s  表示每秒从设备中读取的扇区数

    wr_sec/s  表示每秒写入设备的扇区数

    avgrq-sz  表示平均每次IO操作的数据大小

    avgqu-sz  表示平均I/O队列长度

    await  表示平均每次I/O操作的等待时间(毫秒)

    svctm  表示每次I/O操作的服务时间(毫秒)

    %util  表示每秒用于I/O操作的百分比

    10.pidstat:监控系统资源

    该命令主要用于监控全部或者指定集成占用系统资源的情况,如CPU,内存,IO等。

    常用参数为-u:显示各个进程的CPU使用统计;-r:显示各个进程的内存使用统计;-d:显示各个进程的IO使用情况。

    [root@boxiaoyuan ~]# pidstat -u 5 1   
    Linux 2.6.32-642.el6.x86_64 (boxiaoyuan)        2019年12月05日  _x86_64_       (2 CPU)
    
    05时45分33秒       PID    %usr %system  %guest    %CPU   CPU  Command
    05时45分38秒         4    0.00    0.20    0.00    0.20     0  ksoftirqd/0
    05时45分38秒      1226    0.20    0.20    0.00    0.40     1  redis-server
    05时45分38秒      1228    0.60    0.00    0.00    0.60     1  ruby
    05时45分38秒      1232    0.00    0.20    0.00    0.20     1  gitlab-unicorn-
    05时45分38秒     30035    0.00    0.20    0.00    0.20     0  pidstat

    说明:

    PID:进程ID

    %usr:进程在用户空间占用CPU的百分比

    %system:进程在内核空间占用CPU的百分比

    %guest:进程在虚拟机占用CPU的百分比

    %CPU:进程占用的CPU的百分比

    注:本文内容为《跟老男孩学linux运维 核心系统命令实践》的学习笔记。

  • 相关阅读:
    求一个字符串中连续出现次数最多的子串
    LintCode: Longest Common Substring
    LintCode: O(1) Check Power of 2
    LintCode: Fizz Buzz
    LintCode: 3 Sum
    LintCode: Two Sum
    LintCode: Sort Colors
    LintCode: Median of two Sorted Arrays
    LintCode: Search A 2d Matrix
    Lintcode: Sqrt(X)
  • 原文地址:https://www.cnblogs.com/zhuzhaoli/p/10677343.html
Copyright © 2020-2023  润新知