0%

Shell 监视系统统计信息

监视系统统计信息

功能:监视磁盘空间,并在超过预定值以后发送邮件

  1. df输出
  2. 提取出根目录所在的行,也就是以/结尾的行:使用$df | sed –n ‘//$/p’
  3. 分离出此行上的百分比:$ df | sed –n ‘//$/p’ | gawk ‘{print $5}’
  4. 删除掉%,$ df | sed –n ‘//$/p’ | gawk ‘{print $5}’|sed ‘s/%//‘

所以我们可以创建一个脚本:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

#monitor available disk space

SPACE=`df | sed -n '/\/$/p' | gawk '{print $5}'|sed 's/%//'`

if [ $SPACE -ge 90 ]
then
echo "Disk space on root at $SPACE% used" | mail -s "Disk Warning" leo
fi

echo "Disk space on root at $SPACE% used"

然后我们就可以在cron中写入这个脚本的一些信息,保证每天或者每个月统计一下信息来查看是否已经超过了预警值而发送信息到邮箱。

谁在霸占资源

如果我们负责Linux服务器上的许多用户,需要经常查看谁在使用所有的磁盘空间。

第一步:使用du -s /home/命令,来列出各个文件和目录的磁盘使用情况。
第二部:其中的test不是我们需要的内容,则使用du -s /home/
|grep –v test
第三步,为了查看用户名,我们去掉路径:du -s /home/* |grep –v test |sed ‘//home///p’

接下来,如果有多个用户,可以使用du -s /home/* |grep –v test |sed ‘//home///p’|sort –g –r来排序,确定那个用户占用了较多的空间。

监视CPU和内存使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

#script to capture system statistics



OUTFILE=/home/leo/capstats.csv

DATE=`date +%Y/%m/%d`

TIME=`date +%k:%M:%S`



TIMEOUT=`uptime`

VMOUT=`vmstat 1 2`



USERS=`echo $TIMEOUT | gawk ‘{print $4}’`

LOAD=`echo $TIMEOUT | gawk ‘{print $9}’ | sed ‘s/,//’`

FREE=`echo $VMOUT | sed -n ‘/[0-9]/p’ |sed -n ‘2p’ | gawk ‘{print $4}’`

IDLE=`echo $VMOUT | sed -n ‘/[0-9]/p’ |sed -n ‘2p’ | gawk ‘{print $15}’`



echo "$DATE,$TIME,$USER,$LOAD,$FREE,$IDLE" >> $OUTFILE

从这个脚本,我们就可以设置一些定期运行来查看系统状态的信息,然后我们就可以使用HTML的格式生成一些比较优雅好看的文档格式。这同样可以使用echo命令生成HTML头部的代码,使用gawk命令生成HTML代码数据,然后再次使用echo命令关闭表。

生成的报告,可以使用Mutt命令轻松发送到电子邮件。

小结
当你负责管理Linux系统时,不管是大型的多用户系统,还是自己的系统,都有许多需要监视的内容。与其大量搜索日志文件和手动运行命令,不如创建shell脚本来完成这些任务。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道