Linux でログファイルを定期的に削除する方法は何ですか?
Linuxシステムでは、logrotateツールを使用して定期的にログファイルを削除することができます。
- 最初に、システムにlogrotateツールがインストールされているかを確認してください。以下のコマンドを使用してインストールされているかどうかを確認できます:
- ログローテート –version
- インストールがされていない場合、logrotateを以下のコマンドでインストールすることができます。
- ログローテートをインストールしてください。
- 新しいlogrotateの設定ファイルを作成してください。viやnanoなどのテキストエディタを使用できます。
- サーボイスルージャー /etc/logrotate.d/delete_logs
- 設定ファイル内で、削除する予定のログファイルを指定することができます。以下はサンプル設定ファイルの内容です:
- /var/log/example.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
postrotate
/etc/init.d/rsyslog restart
endscript
} を規定のオプションで設定します。 - 上記の例では、/var/log/example.log は削除すべきログファイルのパスです。他のオプションの設定ファイルの意味は次の通りです:
- 毎日:1日1回実行します。
- missingok: ログファイルが存在しない場合でも、次のステップを続行します。
- rotate 7:7つのログファイルを保持し、古いログファイルは削除されます。
- 旧いログファイルを圧縮してください。
- delaycompress:次のローテーションまで圧縮を遅延させる。
- notifempty: ログファイルが空の場合はローテーションを実行しない。
- 新しいログファイルを作成するときに、権限と所有者を設定します。
- postrotateとendscriptの間の部分は、ローテーション後に実行されるコマンドです。この例では、rsyslogサービスを再起動します。
- 必要に応じて適切な修正や調整を行うことができます。
- ファイルを保存して閉じてください。
- このコマンドを使用して、logrotateを手動で実行することができます:
- sudo logrotate -f /etc/logrotate.d/delete_logs を実行してください。
- すべてが正常な場合、古いログファイルが削除されるでしょう。
- 最後に、logrotateを定期的に実行するためにcron定時タスクを使用できます。/etc/crontabファイルを編集し、以下の行を追加してください。
- 毎日、rootユーザーが/etc/logrotate.d/delete_logsを強制的にローテートする
- これにより、logrotateは毎日深夜に自動的に実行されます。
logrotate はログファイルを完全に削除せず、代わりにローテーションや圧縮を行います。ログファイルを完全に削除したい場合は、postrotate 部分に削除コマンドを追加することができます。例えば:
postrotate
rm /var/log/example.log.*
endscript
/var/log/example.log.で始まるすべてのファイルは、ローテーション後に削除されます。