该程序有三部分组成,第一部分对命令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 语句结构。表示循环体结束。

 注:有些脚本中提到的文件,需要自己建立,才可以运行。

本脚本环境可能适合于你,希望在你运行钱在改进一下,进行学习。