ログローテーションとクリーンアップの自動化
logrotateとfindを使ったスケジュール実行スクリプトでログローテーションと古いファイルの削除を自動化し、ディスクを健全に保ちます。
「ログローテーションとクリーンアップの自動化」はCoddyKit上の無料Linux Command Line & Bash Scripting Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Command Line & Bash Scripting Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
増え続けるログの問題
長時間稼働するサービスは、ログを永続的に書き込みます。管理しなければディスクを使い果たしてシステムが停止します。ローテーションとクリーンアップでログを適切に管理します。
du -sh /var/log/*ログローテーションの仕組み
ローテーションでは、現在のログの名前を変更し、新しい空のログを開始して、古い圧縮済みコピーを限られた数だけ保持します。
- app.logがapp.log.1になります
- 古いコピーはgzip圧縮されます
- 最も古いファイルは削除されます
logrotateの概要
logrotateは、サイズや経過時間に基づくローテーションを自動化する標準的なLinuxツールで、設定は/etc/logrotate.d/以下に記述します。
cat /etc/logrotate.conf基本的なlogrotate設定
設定ブロックには、ログファイルとローテーションのポリシーを記述します。
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
}ディレクティブを理解する
よく使うディレクティブ:
daily毎日ローテーションしますrotate 7古いファイルを7個保持しますcompressローテーションしたログをgzip圧縮しますmissingokファイルがない場合はスキップします
待たずにテストする
-fで強制的に実行するか、-dでドライランを行い、スケジュールを信頼して運用する前に設定を検証します。
logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myapppostrotateスクリプト
多くのサービスは古いファイルハンドルを開いたままにします。postrotateブロックでサービスに通知し、ローテーション後にログを再オープンさせます。
/var/log/myapp/*.log {
daily
postrotate
systemctl reload myapp
endscript
}findで古いファイルを削除する
手動のクリーンアップには、-mtimeを指定したfindを使って、N日より古いファイルを検索して削除します。
find /var/log/myapp -name "*.log" -mtime +30 -delete安全なクリーンアップスクリプト
クリーンアップを、削除したものを記録するスクリプトにまとめると、監査証跡を残せます。
#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
>> /var/log/cleanup.log 2>&1クリーンアップをスケジュールする
ローテーションはlogrotate(すでにcronで実行されています)に任せ、独自のクリーンアップスクリプトはcrontabのエントリでスケジュールします。
# crontab -e
30 2 * * * /usr/local/bin/cleanup.shディスク使用量を監視する
パーティションの使用量がしきい値を超えたときに警告する仕組みを追加し、クリーンアップが遅れすぎないようにします。
USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert root理解度チェック
自動化についての理解度を確認します。
まとめ
ログの管理を自動化しました。
- logrotateで、
rotate、compress、postrotateを使い、経過時間やサイズに基づいてローテーションします -dまたは-fで検証します- 独自のクリーンアップには
find -mtime +N -deleteを使用します - cronでスケジュールし、ディスク使用量の警告で監視します
よくある質問
「ログローテーションとクリーンアップの自動化」レッスンは無料ですか?
はい。「ログローテーションとクリーンアップの自動化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Command Line & Bash Scripting Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
「ログローテーションとクリーンアップの自動化」で何を学びますか?
logrotateとfindを使ったスケジュール実行スクリプトでログローテーションと古いファイルの削除を自動化し、ディスクを健全に保ちます。 ブラウザで直接実行するハンズオンコードでLinux Command Line & Bash Scripting Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Command Line & Bash Scripting Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Command Line & Bash Scripting Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ログローテーションとクリーンアップの自動化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Command Line & Bash Scripting Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Command Line & Bash Scripting Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Cronによるタスクのスケジュール設定
- システム管理の自動化
- 高度なスクリプティングプロジェクト
- ログローテーションとクリーンアップの自動化