0Pricing
Linux Command Line & Bash Scripting Mastery · レッスン

ログローテーションとクリーンアップの自動化

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/myapp

postrotateスクリプト

多くのサービスは古いファイルハンドルを開いたままにします。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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Cronによるタスクのスケジュール設定
  2. システム管理の自動化
  3. 高度なスクリプティングプロジェクト
  4. ログローテーションとクリーンアップの自動化
← Linux Command Line & Bash Scripting Masteryに戻る