作者 主題: bash 判斷問題!!  (閱讀 1629 次)

0 會員 與 1 訪客 正在閱讀本文。

saabday

  • 懷疑的國中生
  • **
  • 文章數: 79
    • 檢視個人資料
bash 判斷問題!!
« 於: 2010-02-28 11:26 »
Dear 各位大大~!!

以下是的BASH是當RAM使用超過90%,就會發送一個error.log到10.10.10.10。

#!/bin/sh

RAM=`free -m |awk '/^Mem/ {if ($3>4000) print $1$3}'|grep -c 'Mem'`
system_status=`grep -c down /root/system-status`

#RAM=====================================================================
if [ $RAM -eq 0 ] && [ $system_status -eq 0 ]
then
echo "RAM-error" > /tmp/error.log
cd /root
./system-collection
scp /tmp/error.log 10.10.10.10:/tmp
echo 'system down' > /root/system-status

elif [ $RAM -eq 1 ] && [ $system_status -eq 1 ]
then
echo "RAM-live" > /tmp/live.log
scp /tmp/live.log 10.10.10.10:/tmp
else
echo > /root/system-status
fi
==========================================================================
[root@local tmp]# ./test1
error.log                                                 100%  785     0.8KB/s   00:00   
error.log                                                 100%  785     0.8KB/s   00:00   
[root@local tmp]# ./test1
[root@local tmp]#

第一次執行結果卻是RAM沒有超過90%,卻還是會發一個error.log到10.10.10.10,並在/root/system-status寫入'system down'
第二次執行結果卻是RAM沒有超過90%,卻把/root/system-status清空
請各位大大幫忙看一下是什麼問題!!
感謝~!!

hongbin

  • 憂鬱的高中生
  • ***
  • 文章數: 101
    • 檢視個人資料
回覆: bash 判斷問題!!
« 回覆 #1 於: 2010-02-28 12:49 »
一.針對第一次執行結果RAM沒有超過90%,卻還是會發一個error.log到10.10.10.10,並在/root/system-status寫入'system down'
   這個沒問題,因為是符合script 裏的第 一個判斷條件
   if [ $RAM -eq 0 ] && [ $system_status -eq 0 ]
     then
     echo "RAM-error" > /tmp/error.log
     cd /root
    ./system-collection
    scp /tmp/error.log 10.10.10.10:/tmp
   echo 'system down' > /root/system-status

2.針對第二次執行結果RAM沒有超過90%
    此時  
          $RAM=0
          $system_status=1(因為第一次執行時有寫入"system down" 到/root/system-status)
  
    在您的判斷條件中,就只能符合最後的條件了,也就是會清空 /root/system-status 的內容..
      else
         echo > /root/system-status
       fi

« 上次編輯: 2010-02-28 12:52 由 hongbin »