システムジャーナルのクリーンアップの自動化:Linux SystemdのCrontabの例
Linuxシステムにおいては、Systemd Crontabを用いてシステムログの定期的なクリーンアップが可能だ。Systemd CrontabはSystemdサービス管理ツールの一部として存在し、設定ファイルを作成することで指定されたタスクの定期的な実行を実現する。
以下のチュートリアルは、Systemd Crontabを使用してシステムログを定期的に削除する方法を示しています。
- clean-logs.timer
- /etc/systemd/system/
[Unit]
Description=Clean Logs Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
上記の設定ファイルにおいて、OnCalendar=dailyはタスクを1日に1度実行することを示し、Persistent=trueはタスクが失敗した場合に遅延して実行されることを示します。また、WantedBy=timers.targetは、このサービスの起動時に自動的に開始されるべきことを示します。
- clean_logs.service
- /etc/systemd/system/
[Unit]
Description=Clean Logs Service
[Service]
Type=oneshot
ExecStart=/bin/bash -c "find /var/log -type f -name '*.log' -delete"
[Install]
WantedBy=multi-user.target
設定ファイルの上段にあるType=oneshotは、サービスを実行する際の動作を指定する部分で、このサービスでは1回の実行のみを行います。ExecStartは、サービスの実行時に実行するコマンドを指定する部分で、ここではfindコマンドを使って/var/logディレクトリ内にある拡張子が.logのファイルを検索し、それらを削除する処理を行います。
- タスクスケジューラとサービスの有効化と起動:
sudo systemctl enable clean-logs.timer
sudo systemctl start clean-logs.timer
上記の命令を実行するとタスクスケジューラとサービスクラスが有効かつ開始され毎日実行されるようになります。
システムログの自動クリーンアップ用のSystemd Crontabはこれで設定完了です。必要に応じてcrontabファイルで、実行する時刻やクリーンアップ時に実行するコマンドを変更してください。