我有一支程式是用來作特定連線用,但是因為某些網路問題,可能會造成該程式中斷網路連線而停止,因此我需要寫一支script來幫助我定時監控該連線還存不存在,如果不存在則要幫我重新連線,下面是Script範例(connection_check.sh):

#!/bin/sh

if /usr/bin/netstat | grep 10.1.1.1.8080 | grep -v grep > /dev/null
then
        date >> /var/log/monitor/log
        echo "connection alived" >> /var/log/monitor/log
else
       date >> /var/log/monitor/log
       echo "connection dead" >> /var/log/monitor/log
        /bin/sh /etc/connect.sh
fi

首先,/usr/bin/netstat | grep 10.1.1.1.8080 | grep -v grep > /dev/null這個指令是用來確認我的機器對10.1.1.1的8080 port連線是否存在,把訊息導給/dev/null是因為我不想看到grep出來的結果,如果連線還在,則把日期跟connnection alived的訊息寫到/var/log/monitor/log,如果連線不存在則執行連線script當然log還是要紀錄。

接著只要在crontab裡面加上一行描述讓crontab每五分鐘去check連線是否存在即可。
*/5     *       *       *       *       root    /root/myscript/connection_check.sh

假如你有一個重要Process需要確保它隨時隨地都是活著的,需要將if /usr/bin/netstat | grep 10.1.1.1.8080 | grep -v grep > /dev/null改為/bin/ps auxw |grep [這裡放Process名稱] |grep -v grep > /dev/null(注意:Process活著不代表正常Work),要注意的是一定要加w這個參數,如果不加的話ps輸出結果有可能被截斷,造成誤判。
arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(0) 人氣()