SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
tail -F
を使いましょう

2012.06.15 hktstudy
   やまだつよし
自己紹介
やまだつよし
●twitter: @minimum2scp
●fb: fb.me/minimum2scp
●インフラエンジニア
●Debian,Rubyとかが好き
監視の初歩: ログを見る




 % tail -f /var/log/foo.log
ログのローテーション

  ● logrotate
  ● 各言語のロガー


% ls -lt /var/log/syslog*
-rw-r----- 1 root adm 212489   6月   16   14:15   /var/log/syslog
-rw-r----- 1 root adm 585170   6月   16   06:25   /var/log/syslog.1
-rw-r----- 1 root adm 38089    6月   15   06:25   /var/log/syslog.2.gz
-rw-r----- 1 root adm 49989    6月   14   06:25   /var/log/syslog.3.gz
-rw-r----- 1 root adm 37739    6月   13   06:25   /var/log/syslog.4.gz
-rw-r----- 1 root adm 34673    6月   12   06:25   /var/log/syslog.5.gz
-rw-r----- 1 root adm 42538    6月   11   06:25   /var/log/syslog.6.gz
-rw-r----- 1 root adm 44490    6月   10   06:25   /var/log/syslog.7.gz
tail -f でログを見る

tail -f でログを見てる途中で
ログのローテーションが起きてしまうと
そこから新しいログが画面に出ない
デモ: tail -f
% touch /tmp/a
% tail -f /tmp/a &
% ruby -rlogger -e '
logger=Logger.new "/tmp/a",7, 1024
loop {
   logger.info "test"
   sleep 1
}'
tail -f から tail -F へ

tail -f ではログがローテーションされた
ことに気付くことはできない

tail -F にすると、
ログローテーションでログファイルが
切り替わったことを検知して、
ログファイルをオープンしなおして
続行してくれる
デモ: tail -F
% touch /tmp/a
% tail -F /tmp/a &
% ruby -rlogger -e '
logger=Logger.new "/tmp/a",7, 1024
loop {
   logger.info "test"
   sleep 1
}'
man 1 tail
TAIL(1)

DESCRIPTION

    -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow,
          and --follow=descriptor are equivalent

    -F    same as --follow=name --retry

    --retry
         keep trying to open a file even when it is or becomes
         inaccessible; useful when following by name, i.e., with
         --follow=name
man 1 tail
TAIL(1)

DESCRIPTION

    With --follow (-f), tail defaults to following the file descriptor,
    which means that even if a tail'ed file is renamed, tail will continue
    to track its end. This default behavior is not desirable when you
    really want to track the actual name of the file, not the file
    descriptor (e.g., log rotation). Use --follow=name in that case.
    That causes tail to track the named file in a way that accommodates
    renaming, removal and creation.
日本語でおk
LANG=ja_JP.UTF-8 man 1 tail
TAIL(1)

説明
  -f, --follow[={name|descriptor}]
        ファイルが大きくなるに合わせて出力にデータを追加する
         -f, --follow および --follow=descriptor は
        等価になる

    -F    --follow=name --retry と等価

    --retry
         ファイルがアクセスできるか否かに関わらずファイルを開くこと
         を試みる。これは --follow=name と併せて使用し、 ファイル名で
         追跡するときに役に立つ
LANG=ja_JP.UTF-8 man 1 tail
TAIL(1)

DESCRIPTION

   --follow (-f) を使用すると、tail はデフォルトでファイル記述子を
   追跡します。 このため tail で追跡しているファイルの名前が変更
   されたとしても、 tail は 元のファイルの終端を追跡し続けます。
   このデフォルトの動 作はファイル記述子 ではなく、実際にある
   名前を持つファイルを追跡する場合には望ましくありませ ん (例: ロ
   グのローテーションなど)。そのような場合には --follow=name
   を使 用してください。これにより名前の変更、削除、作成などに
   あわせて名前のついた ファイルの末尾を追跡するようになります。
tail -F の実装

● inotify を使ってファイルシステムのイベントを監
  視している(たぶん)
● GNU coreutils の src/tail.c の recheck のあた
  り(たぶん)
● inotify は便利な道具
まとめ: tail -F を使いましょう

logrotateは早朝のcron.dailyで起動されて
いるので、深夜から早朝のメンテナンス
のときには tail -f ではなくtail -F を使って
ログを見ましょう

Contenu connexe

Tendances

R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
Kosei ABE
 
シンボリックリンクを探る
シンボリックリンクを探るシンボリックリンクを探る
シンボリックリンクを探る
Koichi Suzuki
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料
Yasutaka Hamada
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
Gosuke Miyashita
 
覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方
Fuminobu Takeyama
 

Tendances (20)

R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
 
シンボリックリンクを探る
シンボリックリンクを探るシンボリックリンクを探る
シンボリックリンクを探る
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
 
Fluentdの使い方
Fluentdの使い方Fluentdの使い方
Fluentdの使い方
 
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談
 
Solaris Container
Solaris ContainerSolaris Container
Solaris Container
 
超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする
 
Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介
 
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
 
超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方
 
PythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみたPythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみた
 
Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
 
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析
 
RとWeb API
RとWeb APIRとWeb API
RとWeb API
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 

[20120615 hktstudy] tail -Fを使いましょう

  • 3. 監視の初歩: ログを見る % tail -f /var/log/foo.log
  • 4. ログのローテーション ● logrotate ● 各言語のロガー % ls -lt /var/log/syslog* -rw-r----- 1 root adm 212489 6月 16 14:15 /var/log/syslog -rw-r----- 1 root adm 585170 6月 16 06:25 /var/log/syslog.1 -rw-r----- 1 root adm 38089 6月 15 06:25 /var/log/syslog.2.gz -rw-r----- 1 root adm 49989 6月 14 06:25 /var/log/syslog.3.gz -rw-r----- 1 root adm 37739 6月 13 06:25 /var/log/syslog.4.gz -rw-r----- 1 root adm 34673 6月 12 06:25 /var/log/syslog.5.gz -rw-r----- 1 root adm 42538 6月 11 06:25 /var/log/syslog.6.gz -rw-r----- 1 root adm 44490 6月 10 06:25 /var/log/syslog.7.gz
  • 5. tail -f でログを見る tail -f でログを見てる途中で ログのローテーションが起きてしまうと そこから新しいログが画面に出ない
  • 6. デモ: tail -f % touch /tmp/a % tail -f /tmp/a & % ruby -rlogger -e ' logger=Logger.new "/tmp/a",7, 1024 loop { logger.info "test" sleep 1 }'
  • 7. tail -f から tail -F へ tail -f ではログがローテーションされた ことに気付くことはできない tail -F にすると、 ログローテーションでログファイルが 切り替わったことを検知して、 ログファイルをオープンしなおして 続行してくれる
  • 8. デモ: tail -F % touch /tmp/a % tail -F /tmp/a & % ruby -rlogger -e ' logger=Logger.new "/tmp/a",7, 1024 loop { logger.info "test" sleep 1 }'
  • 9. man 1 tail TAIL(1) DESCRIPTION -f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent -F same as --follow=name --retry --retry keep trying to open a file even when it is or becomes inaccessible; useful when following by name, i.e., with --follow=name
  • 10. man 1 tail TAIL(1) DESCRIPTION With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will continue to track its end. This default behavior is not desirable when you really want to track the actual name of the file, not the file descriptor (e.g., log rotation). Use --follow=name in that case. That causes tail to track the named file in a way that accommodates renaming, removal and creation.
  • 12. LANG=ja_JP.UTF-8 man 1 tail TAIL(1) 説明 -f, --follow[={name|descriptor}] ファイルが大きくなるに合わせて出力にデータを追加する -f, --follow および --follow=descriptor は 等価になる -F --follow=name --retry と等価 --retry ファイルがアクセスできるか否かに関わらずファイルを開くこと を試みる。これは --follow=name と併せて使用し、 ファイル名で 追跡するときに役に立つ
  • 13. LANG=ja_JP.UTF-8 man 1 tail TAIL(1) DESCRIPTION --follow (-f) を使用すると、tail はデフォルトでファイル記述子を 追跡します。 このため tail で追跡しているファイルの名前が変更 されたとしても、 tail は 元のファイルの終端を追跡し続けます。 このデフォルトの動 作はファイル記述子 ではなく、実際にある 名前を持つファイルを追跡する場合には望ましくありませ ん (例: ロ グのローテーションなど)。そのような場合には --follow=name を使 用してください。これにより名前の変更、削除、作成などに あわせて名前のついた ファイルの末尾を追跡するようになります。
  • 14. tail -F の実装 ● inotify を使ってファイルシステムのイベントを監 視している(たぶん) ● GNU coreutils の src/tail.c の recheck のあた り(たぶん) ● inotify は便利な道具
  • 15. まとめ: tail -F を使いましょう logrotateは早朝のcron.dailyで起動されて いるので、深夜から早朝のメンテナンス のときには tail -f ではなくtail -F を使って ログを見ましょう