• 常见的Linux系统监控命令


     

    1free

    显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

    -b:以Byte为单位显示内存使用情况;

    -k:以KB为单位显示内存使用情况;

    -m:以MB为单位显示内存使用情况;

    -o:不显示缓冲区调节列;

    -s<间隔秒数>:持续观察内存使用状况;

    -t:显示内存总和列

     

    2df

    显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    -a--all:包含全部的文件系统;

    --block-size=<区块大小>:以指定的区块大小来显示区块数目;

    -h--human-readable:以可读性较高的方式来显示信息;

    -H--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes

    -i--inodes:显示inode的信息;

    -k--kilobytes:指定区块大小为1024字节;

    -l--local:仅显示本地端的文件系统;

    -m--megabytes:指定区块大小为1048576字节;

    --no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;

    -P--portability:使用POSIX的输出格式;

    --sync:在取得磁盘使用信息前,先执行sync指令;

    -t<文件系统类型>--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;

    -T--print-type:显示文件系统的类型;

    -x<文件系统类型>--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;

     

    3top

    实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

    选项

    -b:以批处理模式操作;

    -c:显示完整的治命令;

    -d:屏幕刷新间隔时间;

    -I:忽略失效过程;

    -s:保密模式;

    -S:累积模式;

    -i<时间>:设置间隔时间;

    -u<用户名>:指定用户名;

    -p<进程号>:指定进程;

    -n<次数>:循环显示的次数。

    交互命令

    1:显示具体cpu的状态;

    "Shift"+">""shift"+"<":修改进程信息的排序方式;

    h:显示帮助画面,给出一些简短的命令总结说明;

    k:终止一个进程;

    i:忽略闲置和僵死进程,这是一个开关式命令;

    q:退出程序;

    r:重新安排一个进程的优先级别;

    S:切换到累计模式;

    s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s

    f或者F:从当前显示中添加或者删除项目;

    o或者O:改变显示项目的顺序;

    l:切换显示平均负载和启动时间信息;

    m:切换显示内存信息;

    t:切换显示进程和CPU状态信息;

    c:切换显示命令名称和完整命令行;

    M:根据驻留内存大小进行排序;

    P:根据CPU使用百分比大小进行排序;

    T:根据时间/累计时间进行排序;

    w:将当前设置写入~/.toprc文件中。

    top中一些字段的含义

    第一行:

    * 当前的时间

    * 系统累积以及运行的时间

    * 当前登入用户的数量

    * 当前的系统负载

    第二行:

    * 进程总数

    * 正常运行的进程数量

    * 休眠的进程总数

    * 停止的进程总数

    * 僵死进程总数

    zombie僵尸进程

    僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用waitwaitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process)。直到父进程通过wait / waitpid来取时才释放。 但这样就导致了问题,如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

    从系统角度来说,处理僵尸进程有两种方法:

    1 找到僵死进程的父进程,kill掉父进程,那么僵死进程将变为孤儿进程,孤儿进程在系统中由init进程接管,init进程将回收僵死进程的资源

    2 reboot系统,因为僵死进程是不可以被kill

    第三行:

    %Cpu(s): 10.6 us, 1.4 sy, 0.0 ni, 87.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st

    * us用户进程占用cpu资源的百分比

    * sy内核态进程占cpu资源的百分比 (对于硬件的控制,内核来控制

    * ni用户进程空间内改变过优先级的进程占cpu资源的百分比

    * id空闲cpu的百分比

    * wa 等待输入输出(io)的进程占c资源的百分比 (从硬盘加载到内存)

    * hi 硬中断(Hardware IRQ)占用cpu的百分比

    * si软中断(Software Interrupts)占用cpu的百分比

    * st 虚拟机占用cpu的百分比

    进程信息:

    PRPriority 进程的优先级

    NINice Value.优先级的值,负数表示优先级很高,正数表示优先级比较低。

    VIRTvirtual memory usage 虚拟内存,虚拟内存=物理内存+swap

    1、进程"需要的"虚拟内存大小,包括进程使用的库、代码、数据等

    2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

    RESresident memory usage 常驻内存

    1、进程当前使用的内存大小,但不包括swap out

    2、包含其他进程的共享

    3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反

    4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

    SHRshared memory 共享内存

    S — 进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

     

    1、除了自身进程的共享内存,也包括其他进程的共享内存

    2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小

    3、计算某个进程所占的物理内存大小公式:RES – SHR

    4swap out后,它将会降下来

     

    DATA

    1、数据占用的内存。如果top没有显示,按f键可以显示出来。

    2、真正的该程序要求的数据空间,是真正在运行中要使用的。

    早期操作系统不支持多任务

    对于操作系统的多任务,通过cpu时间片来实现处理多任务,目前的cpu主频率可达5.0GHz

     

    4uptime

    打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载,系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

    [root@zabbix ~]# uptime

    17:48:22 up 2:28, 2 users, load average: 0.00, 0.06, 0.07

    负载越高,系统越卡,负载值尽量不要超过cpu核数的两倍以上

     

    5lscpu

    显示cpu的相关信息,也可以通过cat /proc/cpuinfo查看详细信息

    lscpusysfs/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读

    命令输出的信息包含cpu数量,线程,核数,套接字和Nom-Uniform Memeor Access(NUMA),缓存等

    显示格式:

      Architecture: #架构

      CPU(s): #逻辑cpu颗数

      Thread(s) per core: #每个核心线程

      Core(s) per socket: #每个cpu插槽核数/每颗物理cpu核数

      CPU socket(s): #cpu插槽数

      Vendor ID: #cpu厂商ID

      CPU family: #cpu系列

      Model: #型号

      Stepping: #步进

      CPU MHz: #cpu主频

      Virtualization: #cpu支持的虚拟化技术

      L1d cache: #一级缓存(google了下,这具体表示表示cpuL1数据缓存)

      L1i cache: #一级缓存(具体为L1指令缓存)

    L2 cache: #二级缓存

     

    6iftop

    yum install iftop -y

    iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等

    6.1 iftop界面相关说明

    界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

    中间的<= =>这两个左右箭头,表示的是流量的方向。

    TX:发送流量

    RX:接收流量

    TOTAL:总流量

    Cumm:运行iftop到目前时间的总流量

    peak:流量峰值

    rates:分别表示过去 2s 10s 40s 的平均流量

    6.2 iftop相关参数

    常用的参数

    -i设定监测的网卡,如:# iftop -i eth1

    -B bytes为单位显示流量(默认是bits),如:# iftop -B

    -n使host信息默认直接都显示IP,如:# iftop -n

    -N使端口信息默认直接都显示端口号,如: # iftop -N

    -F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24# iftop -F 10.10.1.0/255.255.255.0

    -hdisplay this message),帮助,显示参数信息

    -p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;

    -b使流量图形条默认就显示;

    -f这个暂时还不太会用,过滤计算包用的;

    -P使host信息及端口信息默认就都显示;

    -m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

    进入iftop画面后的一些操作命令(注意大小写)

    h切换是否显示帮助;

    n切换显示本机的IP或主机名;

    s切换是否显示本机的host信息;

    d切换是否显示远端目标主机的host信息;

    t切换显示格式为2/1/只显示发送流量/只显示接收流量;

    N切换显示端口号或端口服务名称;

    S切换是否显示本机的端口信息;

    D切换是否显示远端目标主机的端口信息;

    p切换是否显示端口信息;

    P切换暂停/继续显示;

    b切换是否显示平均流量图形条;

    B切换计算2秒或10秒或40秒内的平均流量;

    T切换是否显示每个连接的总流量;

    l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

    L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

    j或按k可以向上或向下滚动屏幕显示的连接记录;

    123可以根据右侧显示的三列流量数据进行排序;

    <根据左边的本机名或IP排序;

    >根据远端目标主机的主机名或IP排序;

    o切换是否固定只显示当前的连接;

    f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

    !可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!

    q退出监控。

     

    7iostat

    iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

    yum install sysstat -y

    -c 仅显示CPU统计信息.-d选项互斥.

    -d 仅显示磁盘统计信息.-c选项互斥.

    -k K为单位显示每秒的磁盘请求数,默认单位块.

    -p device | ALL

    -x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,:

    # iostat -p hda

    或显示所有设备

    # iostat -p ALL

    -t 在输出数据时,打印搜集数据的时间.

    -V 打印版本号和帮助信息.

    -x 输出扩展信息

    第一部分包含了CPU报告

    %user : 显示了在执行用户(应用)层时的CPU利用率

    %nice : 显示了在以nice优先级运行用户层的CPU利用率

    %system : 显示了在执行系统(内核)层时的CPU利用率

    %iowait : 显示了CPUI/O请求挂起时空闲时间的百分比

    %steal : 显示了当hypervisor正服务于另外一个虚拟处理器时无意识地等待虚拟CPU所占有的时间百分比。

    %idle : 显示了CPUI/O没有挂起请求时空闲时间的百分比

    第二部分包含了设备利用率报告

    Device : 列出的/dev 目录下的设备/分区名称

    tps : 显示每秒传输给设备的数量。更高的tps意味着处理器更忙。

    KB_read/s : 显示了每秒从设备上读取的块的数量(KB,MB)

    KB_wrtn/s : 显示了每秒写入设备上块的数量(KB,MB)

    KB_read : 显示所有已读取的块

    KB_wrtn : 显示所有已写入的块

     

    8vmstat

    显示虚拟内存状态("Viryual Memor Statics"),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

    -a:显示活动内页;

    -f:显示启动后创建的进程总数;

    -m:显示slab信息;

    -n:头信息仅显示一次;

    -s:以表格方式显示事件计数器和内存状态;

    -d:报告磁盘状态;

    -p:显示指定的硬盘分区状态;

    -S:输出信息的单位。

    字段说明:

    Procs(进程)

    r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1

    b: 等待IO的进程数量。

    Memory(内存)

    swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SISO的值长期为0,这种情况不会影响系统性能。

    free: 空闲物理内存大小。

    buff: 用作缓冲的内存大小。

    cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

    Swap

    si: 每秒从交换区写到内存的大小,由磁盘调入内存。

    so: 每秒写入交换区的内存大小,由内存调入磁盘。

    注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IOCPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合siso,如果free很少,但是siso也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

    IO(现在的Linux版本块的大小为1kb

    bi: 每秒读取的块数

    bo: 每秒写入的块数

    注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPUIO等待的值也会越大。

    system(系统)

    in: 每秒中断数,包括时钟中断。

    cs: 每秒上下文切换数。

    注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

    CPU(以百分比表示)

    us: 用户进程执行时间百分比(user time)

    us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

    sy: 内核系统进程执行时间百分比(system time)

    sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

    wa: IO等待时间百分比

    wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

    id: 空闲时间百分比

     

    9dmidecode

    获取有关硬件方面的信息。dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等

    参数:

    -d(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。

    -h:显示帮助信息。

    -s:只显示指定DMI字符串的信息。(string)

    -t:只显示指定条目的信息。(type)

    -u:显示未解码的原始条目内容。

    --dump-bin file:将DMI数据转储到一个二进制文件中。

    --from-dump FILE:从一个二进制文件读取DMI数据。

    dmidecode的输出格式:

    其中的前三行都称为记录头(recode header),其中包括了:

    1.recode id(Handle)DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0x0002.

    2.DMI type id:记录的类型,譬如说:BIOSMemory,上例是type 2,即"Base Board Information".

    3.recode sizeDMI表中对应记录的大小,上例为95 bytes。(不包括文本信息,所有实际输出的内容比这个size要更大)。记录头之后就是记录的值。

    4.recoded values:记录值可以是多行的,比如上例显示了主板的制造商(Manufacturer)、Product NameVersion以及Serial Number

    查看服务器型号:dmidecode | grep 'Product Name'

    查看主板的序列号:dmidecode |grep 'Serial Number'

    查看系统序列号:dmidecode -s system-serial-number

    查看内存信息:dmidecode -t memory

    查看OEM信息:dmidecode -t 11

    取出内存信息Size

    awk '/Size/{print $(NF-1)}' a.txt|sort -n|uniq -c|awk '{print $1"*"$2}'|xargs -n 100|tr ' ' '+'

     

    10nethogs

    按进程或程序实时统计网络带宽使用率

    yum install nethogs -y

    nethogs -d 5            #设置5秒钟的刷新频率

    nethogs eth0            #监视设备(eth0)的网络带宽

    nethogs eth0 eth1    #同时监视eth0eth1接口

    交互命令

    m : 修改单位

    r : 按流量排序

    s : 按发送流量排序

    q : 退出命令提示符

     

     

    文章内容来源于网络

  • 相关阅读:
    基于硬件的毕业设计论文的书写
    C语言程序设计课程总结
    嵌入式程序设计第三周成绩汇总
    C第十八次课
    2016-4班平时成绩第9周排名和汇总
    2016-3班平时成绩第9周汇总和排名
    第十七次课大纲
    第十六次课大纲
    2020-02-28
    2020-02-27
  • 原文地址:https://www.cnblogs.com/ssgeek/p/9304409.html
Copyright © 2020-2023  润新知