logrotateは、ログの肥大化を防ぐためのツール。
ログファイルは、放置しておくとデータサイズが大きくなっていき、/var/logディレクトリを圧迫する。
特定のストレージ装置にファイルとして記録していく方式だと、漫然と記録しているうちに容量を圧迫したり、
空き領域を使い果たして正常な動作に支障をきたす原因になることがある。
このような事態を防止するために、一定の期間を過ぎたログを自動的に削除したり、
ログデータの総量が一定の容量を超えたら最も古いログを削除したりすることをログローテーションという。
ツール名が「logrotate」という。
このツールは、その名の通りログファイルをローテーションするツールで、たとえば、logというファイルを、
log.1、log.2、log.3、のように定期的にローテーションする。
ある時期(たとえば一週間)が経過すると、logはlog.1に、log.1はlog.2に、log.2はlog.3に・・・のように
上書きされる。
最後のファイルは(設定にもよるが)削除される。
また、logファイルは空になり、ここに新たなログが書き込まれる。
logrotateの設定ファイルは/etc/logrotate.confファイルで、何世代のファイルをローテーションするか?
どれだけの期間が経過するとローテーションするか?などを設定する。
logrotateは、デーモンとしては動作しないため、cronを利用して定期的に実行する。
このようなlogrotateですが、多くのLinuxディストリビューションで、デフォルトでインストールされている。
このため、知らないうちにログがローテーションされているという事も多い。
古いログは知らず知らずのうちに消去されてしまっている事もある。
便利なツールだが、存在を知らない、あるいは動作しているという事実を知らないと困ったことになる場合がある。
logrotateの設定ファイルで、設定できる内容は多数あり、ローテーションのタイミングは
日次やファイルサイズなどから指定することができる。
その他にも、例えば以下のようなことが設定できるようになっている。
・アーカイブではなくコピーを作成する
・ローテーションファイルを圧縮する
・ローテーションファイルのパーミッションを設定する
・ローテーション回数を指定する…etc