运维常用的命令

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 23:44 被阅读28次

    运维常用的命令

    iostat

    命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。

    Demo

    iostat -d -x 5 3
    
    

    参数命令解释

    • -d 显示设备利用率报告(d == disk)
    • -x 显示包括磁盘利用率的扩展统计信
    • 5 是取样间隔
    • 3 是总的取样次数

    输出

    
    Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.30   310.59   16.98  165.66  2756.39  3809.99    35.95     0.22    1.19   0.49   8.98
    dm-0              0.00     0.00    0.71    3.78    13.21    30.22     9.69     0.02    5.45   0.59   0.26
    dm-1              0.00     0.00    0.03    0.06     0.26     0.50     8.00     0.01   54.49   0.22   0.00
    dm-2              0.00     0.00   14.90  451.17  2589.13  3609.35    13.30     2.68    5.76   0.19   8.72
    dm-3              0.00     0.00    0.00    0.00     0.01     0.00     8.00     0.00    1.37   0.65   0.00
    dm-4              0.00     0.00    1.72   21.24   153.74   169.92    14.10     2.54  110.74   0.04   0.08
    
    

    字段解释

    • rrqm/s 每秒排队等待到硬盘的读取请求数
    • wrqm/s 每秒排队等待到硬盘的写入请求数
    • r/s 每秒读取请求的数量
    • w/s 每秒写入请求数
    • rsec/s 从硬盘每秒读取的扇区数
    • wsec/s 写入每秒硬盘的扇区数
    • avgrq-sz 发给设备的请求的平均大小(以扇区为单位)
    • avgqu-sz 发送到设备的请求的平均队列长度
    • await 发给设备的I / O请求的平均时间(以毫秒为单位)。 这包括请求在队列中花费的时间以及为维护请求所花费的时间
    • svctm 发送到设备的I / O请求的平均服务时间(以毫秒为单位)
    • %util 向设备发出I / O请求的CPU时间百分比(设备的带宽利用率)。 当该值接近100%时发生器件饱和。

    free

    可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息

    demo

    free -m
    
    
                 total       used       free     shared    buffers     cached
    Mem:         63598      63193        405          0        280       7961
    -/+ buffers/cache:      54951       8647
    Swap:        31863        137      31726
    
    
    • total:总计物理内存的大小。
    • used:已使用多大。
    • free:可用有多少。
    • Shared:多个进程共享的内存总额。
    • Buffers/cached:磁盘缓存的大小。

    第三行(-/+ buffers/cached):

    • used:已使用多大。
    • free:可用有多少。

    meminfo

    cat /proc/meminfo
    
    

    可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息:

    mpstat

    mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

    demo

    mpstat
    
    
    inux 2.6.32-431.el6.x86_64 (mem_name)       2017年01月10日     _x86_64_        (32 CPU)
    
    17时10分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    17时10分39秒  all    0.15    0.00    0.06    0.17    0.00    0.00    0.00    0.00   99.63
    
    

    参数解读

    mpstat [-P {|ALL}] [internal [count]]
    
    
    
    -P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
    
    internal 相邻的两次采样的间隔时间
    
    count 采样的次数,count只能和delay一起使用
    
    当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息
    
    

    字段介绍:

    • user 在interval时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100

    • nice 在interval时间段里,nice值为负进程的CPU时间(%) (nice/total)*100

    • system 在interval时间段里,核心时间(%) (system/total)*100

    • iowait 在interval时间段里,硬盘IO等待时间(%) (iowait/total)*100

    • irq 在interval时间段里,硬中断时间(%) (irq/total)*100

    • soft 在interval时间段里,软中断时间(%) (softirq/total)*100

    • idle 在interval时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)(idle/total)*100

    • intr/s 在interval时间段里,每秒CPU接收的中断的次数intr/total)*100

    • CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirq

    • total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq

    • user=user_cur – user_pre

    • total=total_cur-total_pre

    netstat

    显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些常用的参数:

    可以参考netstat教程

    nmon

    用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具:

    你可以在命令行中启动它,然后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也可以使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于日后分析。

    在每日的监控工作中,我发现 nmon 是我最常用的工具。

    [图片上传失败...(image-e554b-1529163874942)]

    pmap

    查看进程内存使用状况

    pmap PID 或者 #pmap [options] PID

    • -x extended显示扩展格式
    • -d device显示设备格式
    • -q quiet不显示header/footer行
    • -V 显示版本信息

    ps

    查看占用内存最大的前十个进程

    demo

    ps -aux --sort -pcpu,+pmem | head -n 10
    
    

    可以搭配watch

    watch -n 1 'ps -aux --sort -pmem, -pcpu | head 20'
    
    

    sar

    sar 该程序包含三个工具:sar 用来显示数据,sa1 和 sa2 用来收集数据并保存。sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。sar 和 nmon 最大的不同就是 sar 跟适合用作长期的监控,而 nmon 可以让你快速的了解系统当前状态。

    strace

    strace 经常被认为是程序员调试的工具,但不止如此。它可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。Strace 也有一个缺陷,但它在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用

    tcpdump

    Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络

    top

    top 命令显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键

    vmstat

    你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

    watch

    是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行

    相关文章

      网友评论

        本文标题:运维常用的命令

        本文链接:https://www.haomeiwen.com/subject/akdieftx.html