1

特定のパターンに到達するまで、ファイルを追跡してその内容を出力したいと考えています。現在、私はこれをやっています:

grep -q 'pattern' <(tail -F /my/file | tee /dev/stderr)
exit 0

これは問題なく動作しますが、ここでの問題は、この bash プロセスが終了しても、テール ハングアップのプロセスが存在することです。これは Rundeck の問題です。なぜなら、コマンドがまだ完了していないと見なされるからです。これらのオプションを試しました:

  1. tail --pid=$$ を使用します。これは Linux で動作しますが、テール バージョンが --pid をサポートしていない Mac で作業しています。

  2. 「kill 0」を使用します。これは確かにテール プロセスを強制終了しますが、Rundeck もクラッシュします (原文ママ)。

他の提案はありますか?

4

1 に答える 1

2

代わりにコマンドをグループ化する必要があります。

{ tail -F /my/file | tee /dev/stderr; } | grep -q 'pattern'

patternが見つかると、パイプライン内の前のコマンドにgrepa が送信されるようになりました。SIGPIPE

于 2014-05-23T05:28:31.207 に答える