該程序有三部分組成,第一部分對命令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 語句結構。表示循環體結束。
注:有些腳本中提到的文件,需要自己建立,纔可以運行。
本腳本環境可能適合於你,希望在你運行錢在改進一下,進行學習。