
目次
1. はじめに
エックスサーバーで logrotate を使う手順です。
2. logrotate とは?
logrotate は、ログファイルをローテーションするツールです。
例えば、あるディレクトリ直下に 毎日ログファイルを追加作成している場合、放っておくとファイルがどんどん増えていきますが、logrotate を使うと、常に「○日間分のログファイルだけが残る」ように古いログファイルを削除していってくれます。
公式サイト
3. エックスサーバーで logratote を使う手順
以下の操作はすべて、ターミナルからエックスサーバーにログインして行います (SSH でログイン)。
1. logrotate 関連のファイルを配置するディレクトリを作る
logrotate 関連のファイルを配置するディレクトリを作ります。
どこでもよいのですが、今回は ~/local/logrotate/ とします。
$ mkdir ~/local/logrotate
2. logrotate で使用するファイルを用意する
logrotate で使用するファイルを作っておきます。
(1) logrotate.status ファイルを空で作っておきます。
logrotate を実行した時に、その日時が書き込まれるファイルです(ステータスファイル)。基本的に自分で編集することはありません。
(logrotate を最初に実行した時に自動生成されるかもしれませんが、念の為作っておきます)
$ touch ~/local/logrotate/logrotate.status
(2) logrotate.conf ファイルを作成します。
logrotate の設定ファイルです。どこのログファイルをローテーションするのかなどを記述します。
$ touch ~/local/logrotate/logrotate.conf
- このファイル内に、
include {ディレクトリパス}と記述しておくと、指定したディレクトリ内のファイルも設定ファイルとして認識させることができます。
例として ~/log/ ディレクトリ以下のログファイルをローテーションする場合は、以下のように記述しておきます。
/home/{ユーザー名}/log/* {
daily
rotate 2
missingok
notifempty
dateext
create 700 {ユーザー名} {グループ名}
}
※ 各設定値については、man logrotate.conf コマンドを実行してオンラインマニュアルを確認してください。
3. cron で logrotate を動かす
cron を使って logrotate を1日1回実行させます。
logrotate コマンドは、/sbin/logrotate というパスに最初からインストールされていましたので、これを使用します。
以下のコマンドを実行して cron の設定を記述します。
$ crontab -e
以下を1行で追記します。
30 6 * * * /sbin/logrotate -s /home/{ユーザー名}/local/logrotate/logrotate.status /home/{ユーザー名}/local/logrotate/logrotate.conf
この記述のフォーマットは以下です。
今回の例では、毎日 6時30分に実行することになります。
- {ユーザー名} の部分は自分のユーザー名を指定してください。
-sオプションでは、先程作成したステータスファイルを指定しています。
4. まとめ
まとめます。
logrotateコマンドは最初からインストールされているものを使います。- 「ステータスファイル」と「設定ファイル」を作っておき、
logrotateコマンドの引数として指定します。 - どこにあるログファイルをローテーションするかは、設定ファイルに書いておきます。
cronを使い、logrotateコマンドを定期的に実行します。