logrotateの機能、/etc/logrotate.confおよび/etc/logrotate.dでの設定方法、ルールを安全にテストする方法について解説します。
logrotateは、ログファイルがディスクを圧迫しないようにローテーション、圧縮、削除を行うLinuxユーティリティです。通常はsystemdタイマーまたはcronジョブによって1日1回実行され、/etc/logrotate.confと/etc/logrotate.d/内のパッケージごとのルールを読み込みます。
ルールでは、1つ以上のログファイル名と、dailyやweekly(頻度)、rotate 7(保持する古いファイルの数)、compress(古いファイルをgzip圧縮)、missingok(ファイルが存在しなくてもエラーにしない)、notifempty(空のログはスキップ)、postrotate ... endscript(ローテーション後に実行するコマンド。例:ログの再オープン)といったディレクティブを指定します。
一部のプログラムは、開いたままの同じファイルに書き込み続けます。copytruncateはファイルを移動するのではなく、ログをコピーしてから元のファイルを切り詰める(truncate)ため、プログラムはファイルハンドルを保持し続けます。ただし、コピー中に書き込まれた数行が失われる可能性があります。
'logrotate -d /etc/logrotate.conf'を実行するとデバッグモードになり、実行される内容が表示されるだけで実際には処理されません。'-f'は、時期が来ていなくても強制的にローテーションを実行します。
/etc/logrotate.d/myappを作成し、ログパスとディレクティブ(例:weekly、rotate 4、compress、missingok、notifempty)を記述します。sudo logrotate -d /etc/logrotate.d/myappsudo logrotate -f /etc/logrotate.d/myapp最終更新: 2026-10-08
journalctl を使用したログの読み取り方法、ジャーナルが使用している容量の確認方法、および --vacuum オプションを使用して安全に縮小する方法について解説します。
Linux ディスクを圧迫している原因を、du および対話型の ncdu を使用して特定する方法を解説します。同一ファイルシステム内に留まるオプションについても説明します。
cron がどのようにスケジュールされたジョブを実行するか、crontab の5つの時間フィールド、システム cron ファイルの場所、および systemd タイマーとの比較について解説します。