linux sar命令 查看系统资源

2024-01-06 16:38

本文主要是介绍linux sar命令 查看系统资源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 sar是做什么的?

主要负责收集、汇报与存储系统运行信息的.

sar命令可用参数如下:

Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ] [ --legacy ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

下面只列出常用的命令:
sar 命令行的常用格式:

sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:

-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
-n: 记录网络使用情况
默认监控: sar 5 5     //  CPU和IOWAIT统计状态 
(1) sar -b 5 5        // IO传送速率
(2) sar -B 5 5        // 页交换速率
(3) sar -c 5 5        // 进程创建的速率
(4) sar -d 5 5        // 块设备的活跃信息
(5) sar -n DEV 5 5    // 网路设备的状态信息
(6) sar -n SOCK 5 5   // SOCK的使用情况
(7) sar -n ALL 5 5    // 所有的网络状态信息
(8) sar -P ALL 5 5    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 5 5        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 5 5       // 内存和swap空间使用情况
(11) sar -R 5 5       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 5 5       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 5 5       // inode, file and other kernel tablesd的状态信息
(14) sar -w 5 5       // 每秒上下文交换的数目
(15) sar -W 5 5       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 5 5  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 5 5       // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)

2 sar怎么控制信息输出的时间间隔和次数?
有两个参数非常非常常用,就是“时间间隔”和“输出次数”。
时间间隔表示两次信息输出之间的时间间隔,单位是秒。如果这个值被设置为0,则表示所输出的信息是从开机到现在为止的信息平均值。如果不是0,sar计算就都是从当前开始的信息的平均值。输出次数表示输出系统信息的次数,默认是1次。如果这个值被设置为0,则会永远的输出下去。 

比如:sar 60 5 表示每60秒输出一次,共输出5次。(如果你脑子够快的话,会发现这个命令将历时300秒,因为每一次信息输出前会先停顿60秒的。)

3 怎么把sar输出的这些有用信息存到文件中去呢? 

sar专门提供了一个选项-o filename,你只要使用它,就可以喽!

比如
sar 5 6 -o sys_info
不过,不幸的是,当你用cat看sys_info时发现全都是乱码,呵呵,别着急,sar为你准备了-f filename选项,你只要用-f设定要读取的信息存储文件,就可以清晰地读出信息了。

比如
sar -f sys_info
4 如果我使用-o时,竟然忘了输入文件名,sar会抱怨么?
如果你只写了-o,没写具体文件名,那么sar会自动把输出信息更记录在/var/log/saDD文件里,其中DD表示当天的日期数字。

比如
sar 2 2 -o
那么输出信息会记录在/var/log/sa/sa05文件里,因为今天是2017年07月05日。
5 如果我的CPU是多核处理器,那么sar能知道某一个核的运行信息么? 完全没问题的。有一个选项-P,就是用来为多核处理器而设计的。 当在使用sar命令而没有设定-P选项时,sar会根据所有核给出一个宏观汇报,也就是平均的值。 如果使用了-P选项来指定某一个核,那么就会针对这个单独的核给出具体性能信息。 当使用-P ALL时,sar就会根据每一个核都给出其具体性能信息,然后再给出一个总的性能信息。 比如,我这里有一个至强处理器的CPU,是八核CPU,看看-P的使用方法吧:

$ sar -P ALL 1 1
Linux 2.6.9    07/05/201710:59:38 PM       CPU     %user     %nice   %system   %iowait     %idle
10:59:39 PM       all      2.12      0.00      2.87      0.00     95.01
10:59:39 PM         0      0.00      0.00      1.98      0.00     98.02
10:59:39 PM         1      9.00      0.00      7.00      0.00     84.00
10:59:39 PM         2      0.00      0.00      1.98      0.00     98.02
10:59:39 PM         3      7.00      0.00      1.00      0.00     92.00
10:59:39 PM         4      0.00      0.00      3.03      0.00     96.97
10:59:39 PM         5      0.00      0.00      1.00      0.00     99.00
10:59:39 PM         6      0.00      0.00      3.96      0.00     96.04
10:59:39 PM         7      0.99      0.00      1.98      0.00     97.03Average:          CPU     %user     %nice   %system   %iowait     %idle
Average:          all      2.12      0.00      2.87      0.00     95.01
Average:            0      0.00      0.00      1.98      0.00     98.02
Average:            1      9.00      0.00      7.00      0.00     84.00
Average:            2      0.00      0.00      1.98      0.00     98.02
Average:            3      7.00      0.00      1.00      0.00     92.00
Average:            4      0.00      0.00      3.03      0.00     96.97
Average:            5      0.00      0.00      1.00      0.00     99.00
Average:            6      0.00      0.00      3.96      0.00     96.04
Average:            7      0.99      0.00      1.98      0.00     97.03

看,sar会根据处理器的每一个核给出性能信息。当我们想查看第6个核的信息时,其输出如下:

$ sar -P 5 1 1Linux 2.6.9      10/16/200911:01:16 PM       CPU     %user     %nice   %system   %iowait     %idle
11:01:17 PM         5      0.00      0.00      2.00      0.00     98.00Average:          CPU     %user     %nice   %system   %iowait     %idle
Average:            5      0.00      0.00      2.00      0.00     98.00

6 好像sar只会输出CPU信息,如何查看内存信息、网络信息或者IO信息呢?
是这样的,sar命令在默认情况下是输出CPU信息的,只有当用户专门使用选项来设定要查看网络信息时,sar才会输出网络的当前信息,内存信息和IO信息也是同样道理。

7 这么一堆指代某项性能的选项,我懒得使用,我想一下输出最全最全的信息!
sar提供了一个无敌选项,即-A,它代表all,而且还是大写的,可见其威力无敌:D
这个-A就相当于-bBcdqrRuvwWy -I SUM -n FULL -P ALL这么一堆选项了,擦亮眼睛看看每一个选项,熟不熟~~
不过,话说回来,-A轻易不要用,否则一大坨信息输出到屏幕上,刷屏就要刷N年,你不晕菜才怪。
8 我想利用sar来做个后台监控程序,可以实时汇报机器性能情况。sar能放后台运行么?
当然可以,只要借助linux的后台符就可以了,别忘了把标准输出重定向哦,方法是这样的:
sar -o monitor.res interval count >/dev/null 2>&1 &
记得把interval和count都替换为你想要的间隔和次数。这样所有的性能信息就全都存入二进制格式的数据文件monitor.res里了。当读取时使用-f就可以了。
9 我不想使用“间隔和次数”的方法来指定汇报时间,我想让sar在某个特定时间结束,有方法没?
可以实现,使用-e hh:mm:ss选项就可以了,设定好你的结束时间,sar就会乖乖的在这个时间结束喽。
默认的结束时间是18:00:00,也就是说如果你使用-e但没有指定具体时间,sar就会用在晚上6点结束。
需要注意的一点是,-e选项只能用在读取(-f)或写入(-o)信息文件时才可用哦。
10 我觉得-o存储的文件的内容不利于我提取有效信息,怎么办呢?
sar想到了这一点,它提供了一个-h选项,就是用于当你使用-f选项读取文件时,以一种特殊格式输出,这种格式很利于awk等文本处理工具来提取相应信息,你可以试试看:)
11 选项很多,字段很多,背景知识也很多,搞得我快昏了,能不能给一些简洁明了的例子呢?
这么多信息想立刻掌握,并非易事,结合例子,或许效果更好些,例子如下:

sar -u 2 5 :每个两秒报告一次CPU使用情况,共报告5次
sar -I 14 -o sys_info 2 10 :汇报IRQ14的信息,每两秒一次,共10次,所有输出信息存入sys_info中去。
sar -r -n DEV -f sys_net :显示内存使用情况、交换区使用情况以及网络情况,所有输出信息存入sys_net文件中。
12 我对网络监控这块比较感兴趣,能详细说说么?
sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL。

如果你使用DEV关键字,那么sar将汇报和网络设备相关的信息,如lo,eth0或eth1等,例如:
$ sar -n DEV 1 2Linux 2.6.9      10/17/200912:10:49 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:50 AM      eth0     63.64      0.00   4072.73      0.00      0.00      0.00      0.00
12:10:50 AM      eth1     30.30     13.13   2907.07   1234.34      0.00      0.00      0.00
12:10:50 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
IFACE:就是网络设备的名称;
rxpck/s:每秒钟接收到的包数目
txpck/s:每秒钟发送出去的包数目
rxbyt/s:每秒钟接收到的字节数
txbyt/s:每秒钟发送出去的字节数
rxcmp/s:每秒钟接收到的压缩包数目
txcmp/s:每秒钟发送出去的压缩包数目
txmcst/s:每秒钟接收到的多播包的包数目

如果你使用EDEV关键字,那么会针对网络设备汇报其失败情况,例如:
$ sar -n EDEV 1 3Linux 2.6.9     10/17/200912:15:06 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
12:15:07 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:15:07 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:15:07 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
rxerr/s:每秒钟接收到的损坏的包的数目
txerr/s:当发送包时,每秒钟发生的错误数
coll/s:当发送包时,每秒钟发生的冲撞(collisions)数(这个是在半双工模式下才有)
rxdrop/s:由于缓冲区满,网络设备接收端,每秒钟丢掉的网络包的数目
txdrop/s:由于缓冲区满,网络设备发送端,每秒钟丢掉的网络包的数目
txcarr/s:当发送数据包时,每秒钟载波错误发生的次数
rxfram/s:在接收数据包时,每秒钟发生的帧对齐错误的次数
rxfifo/s:在接收数据包时,每秒钟缓冲区溢出错误发生的次数
txfifo/s:在发送数据包时,每秒钟缓冲区溢出错误发生的次数
如果你使用SOCK关键字,则会针对socket连接进行汇报,例如:
$ sar -n SOCK 1 3Linux 2.6.9       10/17/200912:27:29 AM    totsck    tcpsck    udpsck    rawsck   ip-frag
12:27:30 AM        90        41         4         0         0
12:27:31 AM        90        41         4         0         0
12:27:32 AM        90        41         4         0         0Average:           90        41         4         0         0
totsck:被使用的socket的总数目
tcpsck:当前正在被使用于TCP的socket数目
udpsck:当前正在被使用于UDP的socket数目
rawsck:当前正在被使用于RAW的socket数目
ip-frag:当前的IP分片的数目
如果你使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合。

本文参考:http://blog.chinaunix.net/uid-9950859-id-180321.html

http://blog.csdn.net/colin_liu2009/article/details/6862910

这篇关于linux sar命令 查看系统资源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576952

相关文章

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Linux下屏幕亮度的调节方式

《Linux下屏幕亮度的调节方式》文章介绍了Linux下屏幕亮度调节的几种方法,包括图形界面、手动调节(使用ACPI内核模块)和外接显示屏调节,以及自动调节软件(CaliseRedshift和Reds... 目录1 概述2 手动调节http://www.chinasem.cn2.1 手动屏幕调节2.2 外接显

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

交换机救命命令手册! 思科交换机排障命令汇总指南

《交换机救命命令手册!思科交换机排障命令汇总指南》在交换机配置与故障排查过程中,总会遇到那些“关键时刻靠得住的命令”,今天我们就来分享一份思科双实战命令手册... 目录1. 基础系统诊断2. 接口与链路诊断3. L2切换排障4. L3路由与转发5. 高级调试与日志6. 性能与QoS7. 安全与DHCP8.

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出