Linux常用命令之系统监控

Linux

Linux在我们平时主要作为服务器,我们如何来监测服务器运行状况呢?很简单,Linux自带了一些系统监测的命令,本文主要讲解一下这些的linux命令,比如:iostat,sar,lsof。

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它主要是统计磁盘活动情况、CPU使用情况,但仅对系统的整体情况进行分析。
参数:
-c:仅显示CPU使用情况;
-d:仅显示设备利用率;
-k:显示状态以千字节每秒为单位,而不使用块每秒;
-m:显示状态以兆字节每秒为单位;
-p:仅显示块设备和所有被使用的其他分区的状态;
-t:显示每个报告产生时的时间;
-V:显示版号并退出;
-x:显示扩展状态。
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。
例子:

1
2
3
4
5
6
7
8
[root@localhost ~]# iostat -x /dev/sda
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2015年07月30日 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.04 0.00 0.01 0.00 0.00 99.95

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.04 0.03 0.27 1.14 4.83 40.12 0.00 12.37 3.84 13.21 3.36 0.10

第三行结果解释:
Device 监测设备名称
rrqm/s 每秒需要读取需求的数量
wrqm/s 每秒需要写入需求的数量
r/s 每秒实际读取需求的数量
w/s 每秒实际写入需求的数量
rsec/s 每秒读取区段的数量
wsec/s 每秒写入区段的数量
rkB/s 每秒实际读取的大小,单位为KB
wkB/s 每秒实际写入的大小,单位为KB
avgrq-sz 需求的平均大小区段
avgqu-sz 需求的平均队列长度
await 等待I/O平均的时间(milliseconds)
svctm I/O需求完成的平均时间
%util 被I/O需求消耗的CPU百分比

sar命令是Linux下系统运行状态统计工具,sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据,性能消耗小。
参数:
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。
例子:

1
2
3
4
5
6
7
8
[root@localhost ~]# sar -b 1 3 #间隔一秒执行3次
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2015年07月30日 _x86_64_(8 CPU)

1120分02秒 tps rtps wtps bread/s bwrtn/s
1120分03秒 0.00 0.00 0.00 0.00 0.00
1120分04秒 38.00 0.00 38.00 0.00 416.00
1120分05秒 0.00 0.00 0.00 0.00 0.00
平均时间: 12.67 0.00 12.67 0.00 138.67

lsof命令用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件。是十分方便的系统监视工具,该命令需要root权限执行。
参数:
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(ipv4、ipv6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息。
lsof结果各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。
例子:

1
2
3
4
5
6
7
[root@localhost ~]# lsof /usr/sbin/httpd #找出谁在使用httpd这个文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 388 apache txt REG 8,2 507008 134311923 /usr/sbin/httpd
httpd 847 apache txt REG 8,2 507008 134311923 /usr/sbin/httpd
httpd 1190 apache txt REG 8,2 507008 134311923 /usr/sbin/httpd
[root@localhost ~]# lsof -p 388 #列出某个PID对应的进程打开的所有文件
[root@localhost ~]# lsof -i:80 #查看80端口的进程

来源:Linux常用命令之系统监控

发表评论

电子邮件地址不会被公开。 必填项已用*标注