web-dev-qa-db-ja.com

キーワードがトリガーされてコマンドを実行した場合にログファイルを監視するシェルスクリプト

tail -f log.txtのようなログファイルを監視する安価な方法があり、[error]のようなものが表示された場合、コマンドを実行しますか?

ありがとうございました。

35
est
tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done
50
Wesley Rice

また、awkを使用してパターンを監視し、パターンが見つかったときに何らかのアクションを実行できることもわかりました。

tail -fn0 logfile | awk '/pattern/ { print | "command" }'

これは、パターンがログで見つかったときにコマンドを実行します。コマンドには、シェルスクリプトなどを含む任意のUNIXコマンドを使用できます。

13
user420783

さらに堅牢なアプローチは monit です。このツールは非常に多くのことを監視できますが、その1つは1つ以上のログを簡単に追跡し、正規表現と照合してからスクリプトをトリガーすることです。これは、監視するログファイルのコレクションまたはトリガーする複数のイベントがある場合に特に便利です。

5
Ari Maniatis

バッターとシンプル:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
0
Robin Du