该程序有三部分组成,第一部分对命令df 及ps 输出结果进行预处理,提出需要的字段,第二部分用于检查磁盘空间使用情况,第三部分用于检查cpu 及内存的使用情况。
#/bin/bash //表示调用执行脚本程序
#filename:xitong //表示命名脚本名称
######preprocess####### //注视,说明一下是预处理,
df>dfmesg //表示将df执行的命令结果保存到dfmesg中
pr -e dfmesg | awk '{stuff}' //表示将文件dfmesg 中的所有TAB保存到文件dfmesg.
sed '/1k-/d' dfmesg > dfmesg_noheader //表示删除dfmesg文件中包含“1k”的行,保存到文件dfmesg-noheader 中
ps -aux | more > cpumemmesg //表示将系统的所有进程信息保存到cpumemmesg中
pr -e cpumemmesg | awk '{stuff}' //表示将文件中所有TAB装换为空格
sed '/USER/d' cpumemmesg > cpumemmesg_noh //表示删除文件中/USER/d的行,且将删除后的数据保存到cpumemmesg_nod 文件中。
######check system Hd####### //表示检测磁盘空间使用情况
while read LINE1 //循环结构语句,
do //while循环中do
DISK=$LINE1 //定义变量DISK,且赋值变量LINE 1 的值,
echo $DISK>df_item //将变量的DISK的值保存到文件df item中,
DF=`awk ‘BEGIN { FS=“ ” ;} { print $5 ; }’ df_item ` //表示将df-item文件中以空格为分隔符的第5列内容保存到DF 中,其中语句使用了反引号,其中把df执行结果第5列中的信息保存到df_item 中,
echo $DF>df_field //用于将变量Df的值保存到文件df-field中
DD='awk 'BEGIN { FS="%";} {pint $l }' df_field ` //表示将分隔符中的第一列保存到变量dd 中,其中使用反引号,表示从文件每个首字母进行处理,
DINTER=$(( $DD+0 )) //用于将字符型变量DD转换为数字型变量,该行的代码实质是将变量dd数字与零相加,从而转换为数字型变量。
if [ $? -eq 0 ]; then //if语句,用于判断上次命令是否正确执行。
if [ $DINTER -gt 50 ]; then //判断DINTER的值是否大于等于50,当大于等于50 时说明磁盘空间占用量超出,应进行记录
echo $DISK>>df_report //用于将变量DISK的值附加保存到df report.
else //if结构语句else,
echo "THis system hava enoughHD">>df_report //用于将字符串显示出来。
fi //if结构结束,
else
echo "check system HD Error " //用于显示输出
fi
done<drmesg_noheader //其中表示循环体结束,表示从drmesg-noheader 读取消息。
######check system cpu####### //检查cpu的使用情况。
while read LINE2 //循环控制语句,
do //while 循环语句中do
CPUMEM=$LINE2 //表示将变量liNE2 的值赋值给
echo $CPUMEM>ps_item //表示将变量cpumem的值保存到文件ps-item 中。
CPUMESG=`awk 'BEGIN { FS =""; } {print $3; } ' ps _item ` //表示将文件中以空格为分隔符的第3 列保存变量中,其中语句使用了反引号。实质意思是说将文件中第3列提取出来保存到变量CPUMESG中。
if [ $CPUMESG ! = "0.0" -o $MEMMESG != "0.0"] ; then //语句为if 。。。then fi 结构语句,判断变量 是否为 “0.0“,或者不等于‘0.0“ ,
echo $CPUMEM>ps_report //表示将变量的值附加保存到文件ps report 里,
fi //循环结构语句结束
done < cpumemmesg_noheader //其中"匹配"第30 行while 语句结构。表示循环体结束。
注:有些脚本中提到的文件,需要自己建立,才可以运行。
本脚本环境可能适合于你,希望在你运行钱在改进一下,进行学习。