#navi(../)
* tailコマンドで新規作成や削除されるファイルの監視方法 [#j915bfb7]
ログ監視などファイルをtailコマンドとオプション-fを使用してファイルの追記内容を確認したりすることがありますよね。~
この記事は、ファイルが存在する前にtailコマンドで監視したり、監視しているファイルが削除またはリネームにより~
監視ファイルが一時的に削除されても監視する方法を以下に記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連資料 [#xf786d3c]
-[[後方から指定した行数分表示する・tail>逆引きUNIXコマンド/後方から指定した行数分表示する・tail]]

* -Fオプションにより存在しないファイルを監視する [#i3e45198]
通常、存在するファイルをtailコマンドで追記内容を端末に表示するには-fをオプションを使用します。
 tail -f <監視ファイル>
今回は、まだ存在しないファイルまたは、監視中に削除またはリネームされ再度新規作成される場合を想定しています。~
このような場合は、-Fオプションを使用します。
 tail -F <監視ファイル>

* 実際に-fと-Fを使ってみる [#y0add91b]
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オプションを使用することにより、ファイルの有無を気にせずに関しすることができます。~
尚、-Fオプションの意味は以下の通りです。(man tail抜粋)

 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による監視方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS