偵測mysql 服務是否正常運作 shell Script實作

話說,最近遇到一台機器 mysql 服務時常會忘記自己還在
搞了很久實在都搞不定,因此我決定發揮頭痛醫頭的精神。直接寫一個shell Script來偵測看他是不是活著。

Liunx Shell Script 範例:
#!/bin/bash
T=$(date +%H:%M:%S)
D=$(date +%m%d%Y)

mysqladmin -u test flush-hosts $1  >> /dev/null || {
    /etc/init.d/mysqld restart $1 >> /dev/null || {
        echo "$T" > /s_"$D".error
    }
echo "$T" error > /"$D".error
}

說明:
先設定兩個變數 T 和 D分別用來記載時間和檔名,因為我們要讓每天的錯誤檔案分開記這樣比較清楚。

mysqladmin -u test flush-host $1 >> /dev/null
這行的動作是說如果mysqladmin -u test flush-host執行成功( $1 表示執行成功),就不處理
>>表示把處理後的值丟到下面的地方 /dev/null 表示不處理,因此剛剛那一段的意思表示:如果mysql 釋放成功那就不管他

||  要不然(或)

/etc/init.d/mysqld restart $1 >> /dev/null  把mysqld 重新啟動
這個地方要注意一件事情:
在指令模式中,/etc/init.d/mysqld restart 也可以寫成 service mysqld restart。不過在shell script中這樣的寫法是不被允許的,在這裡面的執行路徑都必須是絕對路徑。除非你不想給cron進行排程。

echo "$T" > /s_"$D".error  這表示如果連重新啟動都失敗,就寫入log到 /s_當天日期.error的檔案



存檔後要記得把檔案設成可以被執行  chmod +x 檔案路徑
然後丟到cron中就可以啦


你可能還會需要看:
crond linux 系統排程

留言

這個網誌中的熱門文章

讓 PHP 接收 post 的 json 資料

解決PHP JSON 中文亂碼的問題

PHPExcel 用PHP匯出成EXCEL