Linux のトピック時間計測と日記管理
はじめに
この記事では、Linuxにおいて時間を計測し、日記を管理する方法について紹介します。journalctl と logrotate は主なツールで、これらのツールを使用することでシステムのログを効果的に管理できます。
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
}
この設定の各項目は以下の通りです:
daily: ログを毎日轮替するrotate 7: 7日分のログを保持し、古いログを削除するcompress: 轮替されたログを圧縮するmissingok: ログファイルが存在しない場合でもエラーにならないようにするnotifempty: 空のログファイルであっても轮替を行わない
カスタム設定
カスタムのログ設定を作成するために、 /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 オプションはデバッグモードで動作し、実際にログを轮替しないようにします。
スクリプト例
以下に、 journalctl と logrotate を使用する簡単なスクリプトを作成した例を示します。
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のログ管理は重要なタスクですが、journalctl と logrotate を使用することで効果的に行うことができます。これらのツールを使用してシステムの状態を監視し、問題を速やかに発見することができます。また、スクリプトを使用することで、定期的なログ管理が自動化され、メンテナンスが容易になります。
以上の内容で、Linuxの時間計測と日記管理について紹介しました。必要であれば、それぞれのツールの詳細なドキュメンテーションを確認することをお勧めします。