クラッシュログのあるディレクトリがあり、findコマンドに基づいてbashスクリプトで条件文を使用したいと思います。
ログファイルは次の形式で保存されます。
/var/log/crashes/app-2012-08-28.log
/var/log/crashes/otherapp-2012-08-28.log
最後の5分間に変更された特定のアプリのクラッシュログがある場合にのみifステートメントがtrueを返すようにします。find
私が使用することをコマンドは次のとおりです。
find /var/log/crashes -name app-\*\.log -mmin -5
それをif
ステートメントに適切に組み込む方法がわかりません。私はこれがうまくいくと思う:
if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then
service myapp restart
fi
不明な点がいくつかあります。
- 私はifフラグを見ましたが、もしあれば、どれを使うべきかわかりません。
test
ディレクティブが必要ですか、それともfindコマンドの結果に対して直接処理する必要がありますか、それともfind... | wc -l
代わりに行カウントを取得するために使用する必要がありますか?- この質問に答えるために100%必要というわけではありませんが
test
、コマンドが返すリターンコードに対するテストのためですか?そして、それらは目に見えないようなものです-stdout
/stderr
?このman
ページを読みましたが、いつ使用するtest
か、どのようにデバッグするかについてはまだはっきりしていません。
... -exec command ';' -quit
、結果を解析する以外に後者の解決策はないと思います。また、どちらの場合でも、結果の解析に関する主要な問題find
(ファイル名の文字と区切り文字を区別できないこと)は当てはまりません。これらの場合は区切り文字を見つける必要がないからです。
find ... -exec
です。また、なぜfindの出力をループするのが悪い習慣の