Linux 系統運行久了,/var/log 下日誌檔案會佔用大量磁碟空間。本文列出常見日誌用途、手動清理指令、logrotate 自動化配置與最佳實踐。
| 檔案 | 記錄內容 |
|---|---|
| /var/log/messages | 系統核心訊息、服務啟動錯誤(Syslog 主要輸出) |
| /var/log/secure | 安全相關:登入嘗試、sudo、SSH 認證 |
| /var/log/maillog | 郵件服務收發記錄 |
| /var/log/cron | 定時任務執行記錄 |
| /var/log/boot.log | 開機過程服務啟動狀態 |
| /var/log/dmesg | 核心環緩衝區(硬體偵測、驅動載入) |
| /var/log/wtmp | 歷史登入記錄(last 指令讀取) |
| /var/log/btmp | 失敗登入記錄(lastb 指令讀取) |
| /var/log/lastlog | 每個用戶最近一次成功登入 |
| /var/log/xferlog | FTP 傳輸記錄 |
| /var/log/httpd/access_log | Apache 存取日誌 |
| /var/log/httpd/error_log | Apache 錯誤日誌 |
> /var/log/messages
# 或
cat /dev/null > /var/log/messages
# 或
truncate -s 0 /var/log/messages
find /var/log -type f -name "*.[0-9]" -delete
find /var/log -type f -name "*.gz" -delete
find /var/log -type f -exec rm -v {} \;
# 會導致服務無法寫入日誌,需重啟相關服務或重建檔案
主配置 /etc/logrotate.conf,服務別配置置於 /etc/logrotate.d/。
/var/log/messages /var/log/secure /var/log/maillog /var/log/cron {
daily # 每天輪轉
missingok # 檔案不存在不報錯
rotate 4 # 保留 4 個舊檔
compress # 壓縮舊檔
delaycompress # 延後一天壓縮
notifempty # 空檔不輪轉
create 0640 root utmp # 建立新檔權限
sharedscripts # 共用腳本
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
daily/weekly/monthly:輪轉頻率。rotate N:保留 N 個備份。compress/delaycompress:gzip 壓縮。size 100M:超過大小強制輪轉(可與時間結合)。postrotate/endscript:輪轉後執行命令(如 reload 服務)。logrotate -d /etc/logrotate.conf # 測試模式(不實際操作)
logrotate -f /etc/logrotate.conf # 強制執行
> 清空或配置 logrotate。size 100M + daily 雙重觸發。/var/log 磁碟使用量:du -sh /var/log。