一開始nagios執行監控指令碼的時候,總是不定期地偶爾地出現下面的錯誤
[: too many arguments
指令碼一開始是這麼寫的:
guard_info=`ps aux | grep guard | grep -v grep | grep guard_replica_id | awk ''`
echo guard_info:$guard_info
if [ "$guard_info" = "" ]; then
echo "guard is not found"
exit 0
fivsz=`echo $guard_info | awk ''`
echo vsz:$vsz
cpu=`echo $guard_info | awk '' | awk -f"." ''`
echo cpu:$cpu
if [ $vsz -gt 606192 ]; then
echo "vsz as large as $vsz"
exit 2
elif [ $cpu -gt 5 ]; then
echo "cpu percentage is $p_cpu"
exit 2
else
exit 0fi
最後發現是guard本身會fork子程序,在呼叫execve之前和fork()之後有那麼乙個小時間視窗,這個時候會存在兩個相同名字相同引數的程序存在。
解決辦法就是用elapsed time來對grep出來的guard程序進行排序,取時間最長的那個。最後指令碼變成這樣:
guard_info=`ps -c guard -o pid=,etime=,vsz=,%cpu= --sort -etime | head -1`
echo guard_info:$guard_info
if [ "$guard_info" = "" ]; then
echo "guard is not found"
exit 0
fivsz=`echo $guard_info | awk ''`
echo vsz:$vsz
cpu=`echo $guard_info | awk '' | awk -f"." ''`
echo cpu:$cpu
if [ $vsz -gt 606192 ]; then
echo "vsz as large as $vsz"
exit 2
elif [ $cpu -gt 5 ]; then
echo "cpu percentage is $p_cpu"
exit 2
else
exit 0
fi
mysql 監控指令碼 監控mysql狀態指令碼
監控mysql狀態,發現宕後,自動重啟,每秒檢查一次。check.sh bin bash while true do bin sleep 1 sh mysql status.sh done chengkill bin sh pid kill thread for chenglee if filefo...
Linux CPU 監控指令碼
下面是乙個簡單的cpu監控指令碼,當然還可以在進行全面考慮公升級該指令碼。bin sh gt 60 伺服器只有乙個cpu scriptdir root shell cpu jk 目錄存放 logdir scriptdir log 日誌檔案存放及目錄建立 清理 if d logdir then ech...
監控報警指令碼
內部自己開發的服務應用程式 經常會由各種bug宕掉,所以寫了個監控指令碼 如下 bin bash echo processgroud is start date while dotradeport netstat antp grep 0.0.0.0 8888 awk if tradeport lis...