web-dev-qa-db-ja.com

ファイルが存在するまでテールを待機させる

somefile.logが存在しない場合、tail -f bar/somefile.logはすぐに失敗します。そのファイルが作成されるのを無限に待つにはどうすればよいですか(これはしばらくして起こります)?

更新:-Fを使用すると、次のようになります:

tail: cannot open `bar/somefile.log' for reading: No such file or directory
tail: cannot watch parent directory of `bar/somefile.log': No such file or directory

barはまだ存在しないためです(すぐに作成されます)。 barが作成され、somefile.logがタッチされたとき、テールは変更をまったく反映しませんでした。

26

これは機能します:

while ! tail -f bar/somefile.log ; do sleep 1 ; done
28
cYrus

あなたはそれが必要なOSについて言及していませんが、 tailon linux には--retryオプションと--followオプションがあり、それだけを実行します。

tail --retry --follow=name somefile.log
33

最初にファイルを作成します。

touch somefile ; tail -f somefile
6
psusi