goo blog サービス終了のお知らせ 

覚書

作業メモ

時間で作業を実行する ###grep -c の利用###

2006-03-29 19:12:24 | シェル
ファイルのローテーションなどで、5分おきなどでcronをまわしている処理の中で
一日一回出力先をローテーションする場合などは、dateコマンドを変数で持たせ
その変数をgrep -c に渡すことによって、その結果をif分に渡すことが出来る。

grep -c #cオプションは、該当する文字の個数を数えます。

【00:00にローテーションを実施】

date=`date +"%T"` #時間をhh:mm:ss形式で表示 -> 変数$dateに入れる

COUNT=`echo "${date}" | grep -cE "00:00:"` #grepにて00:00の個数を数える
                             #Eオプションは正規表現

if [ "${COUNT}" = "1" ] ; #if分にて00:00個数が1の場合“正”とする。

【確認事項】
COUNT行は、$date変数ではなく、直接
`date +"%T" | grep -cE "00:00:"`
でも、良いのかな。。。要確認です。

今回作ったシェルスクリプト
■キューに溜まっているメールの通数を調査する。
---
#!/bin/sh

date=`date +"%Y/%m/%d %T"`

COUNT=`echo "${date}" | grep -cE "18:40:"`

if [ "${COUNT}" = "1" ] ;
then
mv /var/log/mailcheck.log /var/log/mailcheck.0
touch /var/log/mailcheck.log
fi

if [ `ls /var/spool/mqueue | wc -l` -ge 10 ] ;
then
echo "${date} メールがキューに溜まっています。至急確認してください!"
else
echo "${date} GOOD!!"
fi
---