RockyLinux9
•
•
By SystemArch_Alex
Rocky Linux 9 基礎教學 (12):日誌管理:Journalctl 與 Logrotate 實戰
掌握系統狀態的雙重利器
在 Rocky Linux 9 中,日誌管理分為兩大體系:由 Systemd 負責的二進制日誌 journald,以及負責傳統文本日誌轉儲的 logrotate。身為資深工程師,必須學會如何從海量數據中精確定位問題。
1. Journalctl:現代化的日誌查詢
journalctl 提供了強大的篩選功能,不再需要使用 grep 在多個檔案間穿梭。
# 查看當前開機後的所有日誌
journalctl -b
# 即時監控特定服務的日誌 (如 sshd)
journalctl -u sshd -f
# 查詢特定時間範圍內的錯誤訊息
journalctl --since "2026-01-01" --until "2026-01-31 12:00:00" -p err
# 查看核心日誌 (等同於 dmesg)
journalctl -k
2. 限制 Journal 日誌大小
二進制日誌若不限制,會佔用大量磁碟空間。編輯 /etc/systemd/journald.conf:
[Journal]
SystemMaxUse=500M
設定後執行 sudo systemctl restart systemd-journald 即可生效。
3. Logrotate:文本日誌的自動化管家
對於 /var/log/ 下的傳統日誌,logrotate 負責定期壓縮、刪除與重新命名。其主配置檔位於 /etc/logrotate.conf,而各服務的配置則放在 /etc/logrotate.d/。
4. 實戰範例:為自定義應用設定 Logrotate
假設你有一個應用程式日誌位於 /var/log/myapp.log,我們希望每天轉儲一次,保留 7 天,並進行壓縮:
/var/log/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root root
postrotate
/usr/bin/systemctl reload myapp > /dev/null 2>&1
endscript
}
5. 除錯與手動執行
若想測試 logrotate 配置是否正確,可以使用以下指令強制執行:
sudo logrotate -f /etc/logrotate.d/myapp
透過 journalctl 進行即時除錯,並利用 logrotate 確保磁碟空間不被日誌塞爆,是維護 Rocky Linux 9 穩定性的基本要求。