JP1とかSystemwalkerとかの運用管理系のPPって高くて手が出ないので、リソース監視系のシェルを自作で入れてます。
かといってlogwatchとかで毎日確認もめんどくさいですよね。。。


という訳でディスク使用率の確認シェル。

 

ディスク使用率を監視して、閾値を超えた場合にメールを送信しています。

 

cronに登録して定期的に実行してください

 

============ dfcheck.sh ============


#!/bin/sh

 

# 変数定義(適宜変更してください)

 

#閾値設定(%)
LIMIT_PER=80

 

#ワークファイル名(フルパス)
WORK_FILE="/tools/dfcheck.work"

 

#閾値を超えた場合に送付するメールアドレス
MAIL_ADDR="hoge@hoge.com "

 

#################################################
## 処理   ##
#################################################

 

#ディスク使用率をワークファイルに出力(ヘッダ行は削除)
df -k | awk '(FS=" "){if($1 != "Filesystem"){print $0;}}' > ${WORK_FILE}

 

#ワークファイルからディスク使用率を1行づつ読み込む
IFS=" "

while read p1 p2 p3 p4 USE FILESYSTEM
do

 

#%を取り除く
RATE=`echo ${USE} | awk '(FS="%"){printf("%d",$1);}'`

 

#ディスク使用率が閾値以上かのチェック
if [ ${RATE} -ge ${LIMIT_PER} ];then

 

##閾値以上なので、メールを送付する
/bin/mail -s "DISK ALERT" ${MAIL_ADDR} < ${WORK_FILE}


fi


done < ${WORK_FILE}

 

#ワークファイルの削除
rm ${WORK_FILE}

 

exit 0

cronの登録って、/etc/crontabに書いちゃうしともいれば、crontab -e(/var/spool/cron/hoge)に書いちゃう人もいるし、、、

(OSによって微妙に異なりますけど)


私の場合は後者なんですけど、両方のファイルの編集方法とか書いてみます。


【/etc/crontabの場合】

分 時 日 月 曜日 ユーザ 実行コマンド

のように記述します

*の場合はすべてを含みます。


(例)毎日1時5分に/tools/test.shをrootユーザで実行する

5 1 * * * root /tools/test.sh


(日、時、曜日が*なので、毎日となります)


【crontab -e】

/etc/crontabからユーザだけを外す。


(例1)毎日1時5分に/tools/test.shをrootユーザで実行する

5 1 * * * /bin/sh /tools/test.sh



【全般】

○上記のtest.shを5分置きに実施する場合


0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/sh /tools/test.sh


と書くことも可能ですが、めんどくさいので


*/5 * * * * /bin/sh /tools/test.sh


とする事もできます


○ログを出力しない

実行コマンドの後ろに”> /dev/null 2>&1”を追加する


5 1 * * * /bin/sh /tools/test.sh > /dev/null 2>&1



○作成したシェルを登録する場合

シェルに実行権(x)を付け忘れたりすることもあるので、上記例のように実行コマンドに

/bin/shをつける

何でかよく分からないんですが、dovcotがたまに落ちます。

原因を調査しようと思ってはいるんですけどね、自宅サーバだからと重い腰をあげません。。。


という訳で定期的に監視して落ちてたらサービスをあげなおすシェルを作ってみました。

cronに登録してご利用ください。

※ファイル名にdovecotという文字列を使用しない事(psで引っかかるので常にサービスあげようとします)


根本的対処ではないんですけどね。。。


============ dovecheck.sh ============


#!/bin/sh


#dovecotのプロセスを確認する
PCOUNT=`ps -ef | grep dovecot | grep -v grep | wc -l`


##dovcot関連のプロセスがない場合

if [ ${PCOUNT} == 0 ];then


#サービスを起動する
/sbin/service dovecot start


fi


exit 0