一つの方法は、cron
仕事です。それは他のソリューションよりも複雑ですが、非常に信頼性があります(「チェックスクリプト」がクラッシュしても、期間が過ぎるとcron
で再度呼び出されます)。 cron
は次のようになります。
*/15 * * * * env DISPLAY=:0 /folder/checkscript >/dev/null 2>&1
(注意env DISPLAY=:0
は、あなたの場合に必要とされない可能性があります、またはそれはあなたのスクリプトに応じて、必要になる可能性があります:あなたは、あなたの場合にこれを適応する必要があるかもしれません、見つけるために、エコー$DISPLAY
を実行しますあなたの変数をケースに入れてください)。それは、あなたの質問には含まれていません
#!/bin/bash
if [ -f /tmp/checkVarCount ]; then oldCheckVar="$(cat /tmp/checkVarCount)"; else oldCheckVar="0"; fi
checkVar="$(grep -o "pattern" /folder/file | wc -l)"
echo "$checkVar" > /tmp/checkVarCount
checkVar="$(($checkVar-$oldCheckVar))"
if [ "$checkVar" -eq 3 ]; then command1; fi
if [ "$checkVar" -eq 5 ]; then command2; fi
exit
、しかし、あなたが同様のパターンが4回か7回を発見された場合、コマンドを実行することを意図した場合は、変更することができます:
あなた"checkscript"
は可能性があり上記の関連する部分:
if [ "$checkVar" -ge 3 ] && [ "$checkVar" -lt 5 ]; then command1; fi
if [ "$checkVar" -ge 5 ]; then command2; fi
ここまでお試しいただいたことはありますか?最も重大な実装は、毎回パターンの合計発生数を読み取り、そのカウントをファイルに格納することです。 15分ごとに、現在のカウントと以前に格納されたものとを比較します。 – codeforester
あなたのコードを表示 –