tailコマンドで新規作成や削除されるファイルの監視方法 †ログ監視などファイルをtailコマンドとオプション-fを使用してファイルの追記内容を確認したりすることがありますよね。 関連資料 †-Fオプションにより存在しないファイルを監視する †通常、存在するファイルをtailコマンドで追記内容を端末に表示するには-fをオプションを使用します。 tail -f <監視ファイル> 今回は、まだ存在しないファイルまたは、監視中に削除またはリネームされ再度新規作成される場合を想定しています。 tail -F <監視ファイル> 実際に-fと-Fを使ってみる †tailコマンドの-fと-Fオプションを使ってみた結果を以下に記します。 tail -f <ファイル名> では、以下のようにファイルが存在しない場合はメッセージが出力され終了してしまいます。 sakura@ubuntu:~$ tail -f foo.log tail: `foo.log' を 読み込み用に開くことが出来ません: そのようなファイルやディレクトリはありません tail -F <ファイル名> で実行すると、以下のようなメッセージが表示されますが、tailコマンドは終了せず、指定したファイルを監視します。 sakura@ubuntu:~$ tail -F foo.log tail: `foo.log' を 読み込み用に開くことが出来ません: そのようなファイルやディレクトリはありません 実際に別端末を開き、以下のようなコマンドで監視ファイルにログを追記してみます。 sakura@ubuntu:~$ echo `date` : hello >> foo.log sakura@ubuntu:~$ echo `date` : hello >> foo.log tail -Fコマンドを実行している端末には以下のように出力されます。 tail: `foo.log' はアクセス可能になりました 2013年 9月 4日 水曜日 23:13:45 JST : hello 2013年 9月 4日 水曜日 23:13:46 JST : hello 監視しているファイル名をmvコマンドで変更すると、以下のメッセージが表示されますがtailコマンドは終了しません。 tail: `foo.log' はアクセス不能になりました: そのようなファイルやディレクトリはありません 再度、以下のようなコマンドで監視ファイルにログを追記してみます。 sakura@ubuntu:~$ echo `date` : world >> foo.log sakura@ubuntu:~$ echo `date` : world >> foo.log tail -Fコマンドを実行している端末には以下のように出力されます。 tail: `foo.log' が現れました。新しいファイルの終端を追跡します 2013年 9月 4日 水曜日 23:16:46 JST : world 2013年 9月 4日 水曜日 23:16:47 JST : world 従って、ログファイル等を監視する場合は-Fオプションを使用することにより、ファイルの有無を気にせずに関しすることができます。 TAIL(1) User Commands TAIL(1) NAME tail - output the last part of files SYNOPSIS tail [OPTION]... [FILE]... <snip> -f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent -F same as --follow=name --retry <snip> --retry keep trying to open a file even when it is or becomes inaccessible; useful when following by name, i.e., with --follow=name 以上、ファイルが存在しない場合のtailによる監視方法でした。 |