- [root@wzp ~]# cat diskuse
- #!/bin/bash
- # calculate disk usage and report per user
-
- TEMP=`mktemp -t tmp.XXXXXX`
- du -s /home/* | sed ''s//home///'' | sort -g -r > $TEMP
- total=`du -s /home | gawk ''{print $1}''`
- cat $TEMP | gawk -v n="$total" ''
- BEGIN {
- print "total disk usage by user";
- print "usertspacetpercent"
- }
-
- {
- printf "%st%dt%6.2f%n", $2, $1, ($1/n)*100
- }
-
- END {
- print "-------------------";
- printf "totalt%dn", n
- }''
- rm -f $temp
- [root@wzp ~]# ./diskuse
- total disk usage by user
- user space percent
- www 90236 77.77%
- mysql 18684 16.10%
- 51cto 7100 6.12%
- -------------------
- total 116028
3、监视CPU和内存使用情况
通过编写shell脚本实现对PU和内存使用情况的监控
3.1、必需函数
linux下有几个命令可以从系统中提取出CPU或内存的使用情况,如top、uptime、free等
[root@wzp ~]# uptime
12:45:02 up 1:29, 1 user, load average: 0.00, 0.00, 0.00
uptime命令可以给出一些信息点:
* 当前时间
* 系统已经运行的时间
* 当前已经登录到系统的用户个数
* 1、5和15分钟的系统负载平均值
另一个提取系统信息的命令vmstat:
[root@wzp ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 419176 22980 46652 0 0 23 5 554 16 0 1 98 1 0
如上显示为上次重新引导的平均值,如果要获取当前统计信息,可以使用vmstat 1 2 :
[root@wzp ~]# vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 419176 22980 46652 0 0 23 5 554 16 0 1 98 1 0
0 0 0 419176 22980 46652 0 0 0 0 1064 16 0 0 100 0 0
第二行包含linux系统的当前统计信息,如果是vmstat 1则一直动态显示系统当前信息.
对于如上的符号做一个简单介绍:
r: 等待CPU时间的进程数
b: 不间断休眠中的进程数
swpd: 使用的虚拟内存量(以MB为单位)
free: 未使用的物理内存量(以MB为单位)
buff: 用作缓存空间的内存量(以MB为单位)
cache: 用作高速缓存空间的内存量(以MB为单位)
si: 从磁盘交换的内存量(以MB为单位)
so: 交换到磁盘的内存量(以MB为单位)
bi: 从块设备收到的块数
bo: 发送到块设备的块数
in: 每秒CPU的中断数
cs: 每秒CPU的上下文交换数
us: CPU消耗在运行非内核代码上的时间百分比
sy: CPU消耗在运行内核代码上的时间百分比
id: CPU空间的时间百分比
wa: CPU消耗的在等待I/O上的时间百分比
st: 从虚拟机窃取的CPU时间百分比
接下来通过vmstat 1 2 和 uptime命令,从中提取相关参数来编写获取数据的脚本:
- [root@wzp ~]# touch capstats
- [root@wzp ~]# cat capstats
- #!/bin/bash
- # script to capture system statistics
-
- OUTFILE=/root/capstats.csv
本文出自 “twenty_four” 博客,请务必保留此出处http://twentyfour.blog.51cto.com/945260/566391
|