← Back to Home

時間計測と日記管理(journalctl, logrotateなど)

Views: 970

You can try the commands on our interactive shell.

Linux のトピック時間計測と日記管理

はじめに

この記事では、Linuxにおいて時間を計測し、日記を管理する方法について紹介します。journalctllogrotate は主なツールで、これらのツールを使用することでシステムのログを効果的に管理できます。

journalctl の使用

journalctl は、Linux Systemd デーモンが生成するログを閲覧できるユーティリティです。以下に journalctl を使用してログを表示する方法を示します。

基本的な使用法

# 全てのログを表示
journalctl

# 特定のサービスのログを表示
journalctl -u <service_name>

# 最近の10件のログを表示
journalctl -n 10

# 現在時刻以降のログを表示
journalctl --since "now"

# 指定された時間範囲内のログを表示
journalctl --since "2023-04-01" --until "2023-04-30"

ログレベルの指定

journalctl は、ログレベルに基づいてログをフィルタリングできます。

# エラーレベル以上のログを表示
journalctl -p err

# 调试レベル以下のログを表示
journalctl -p debug

logrotate の使用

logrotate は、システムのログファイルを定期的に轮替し、サイズや日数に基づいて古いログを削除するツールです。以下に logrotate を設定する方法を示します。

基本的な設定

まず、 /etc/logrotate.conf ファイルを開き、以下のように設定します。

/var/log/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0644 root root
}

この設定の各項目は以下の通りです:

カスタム設定

カスタムのログ設定を作成するために、 /etc/logrotate.d/ 目录下に新しい .conf ファイルを作成できます。

# /etc/logrotate.d/myapp
/var/log/myapp.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 0644 myuser mygroup
}

この設定では、myapp.log ファイルを週に1回轮替し、4週間分のログを保持します。

手動実行

logrotate の設定が完了したら、以下のように手動で実行してテストできます。

sudo logrotate -d /etc/logrotate.conf

-d オプションはデバッグモードで動作し、実際にログを轮替しないようにします。

スクリプト例

以下に、 journalctllogrotate を使用する簡単なスクリプトを作成した例を示します。

journalctl スクリプト

#!/bin/bash

# 現在時刻
NOW=$(date +"%Y-%m-%d_%H:%M:%S")

# ログファイル名
LOG_FILE="/var/log/myapp.log"

# 読取するサービス名
SERVICE_NAME="myapp.service"

# journalctl を使用してログを出力し、ログファイルに保存
journalctl -u ${SERVICE_NAME} --since "now" >> ${LOG_FILE}

# ログファイルのサイズ確認
FILE_SIZE=$(du -k ${LOG_FILE} | awk '{print $1}')

# ファイルサイズが一定値を超えた場合、古いログを削除
if [ "$FILE_SIZE" -gt 1024 ]; then
    rm -f $(ls -t /var/log/myapp.log.* | tail -n +5)
fi

# 結果を出力
echo "${NOW}: ログ轮替完了" >> ${LOG_FILE}

このスクリプトでは、myapp.service のログを定期的に読み取り、指定した最大ファイルサイズを超えた場合、古いログを削除します。

logrotate スクリプト

#!/bin/bash

# ログファイル名
LOG_FILE="/var/log/myapp.log"

# logrotate を使用してログを轮替
logrotate /etc/logrotate.d/myapp

# 結果を出力
echo "$(date +"%Y-%m-%d_%H:%M:%S"): logrotate 実行" >> ${LOG_FILE}

このスクリプトでは、/etc/logrotate.d/myapp の設定に基づいてログファイルを轮替します。

結論

Linuxのログ管理は重要なタスクですが、journalctllogrotate を使用することで効果的に行うことができます。これらのツールを使用してシステムの状態を監視し、問題を速やかに発見することができます。また、スクリプトを使用することで、定期的なログ管理が自動化され、メンテナンスが容易になります。

以上の内容で、Linuxの時間計測と日記管理について紹介しました。必要であれば、それぞれのツールの詳細なドキュメンテーションを確認することをお勧めします。

Try it Now!