在開始清理前,需明確日志文件的位置(Ubuntu系統日志主要存儲在/var/log/目錄下,包括syslog、auth.log、dpkg.log等)及操作權限(所有操作需使用sudo提升權限,避免權限不足導致失?。?。此外,建議備份重要日志(如sudo cp /var/log/syslog ~/syslog_backup),以防誤刪導致無法追溯系統問題。
journalctl命令(Systemd日志管理)journalctl是Ubuntu系統默認的日志管理工具,可高效管理systemd生成的日志(包括內核、服務及系統日志)。
journalctl --disk-usage(顯示當前日志占用的總空間);sudo journalctl --vacuum-size=100M(將日志總大小限制在100MB以內,自動刪除舊日志);sudo journalctl --vacuum-time=2weeks(刪除兩周前的所有日志);sudo journalctl --vacuum-by-service=ssh.service(僅刪除ssh.service的日志)。若需清理特定日志文件或一次性釋放大量空間,可手動操作:
sudo truncate -s 0 /var/log/syslog(將syslog文件大小截斷為0字節);或sudo > /var/log/auth.log(用空內容覆蓋文件);.log文件):sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(查找/var/log下所有.log文件并清空);sudo rm /var/log/syslog(刪除文件),隨后sudo touch /var/log/syslog && sudo chmod 640 /var/log/syslog && sudo chown root:adm /var/log/syslog(重新創建空文件并設置正確權限,避免服務報錯)。/var/log下的系統日志(如auth.log、syslog)可能導致系統無法診斷問題,建議僅清理確認無用的日志(如dpkg.log、kern.log)。logrotate工具(自動化管理)logrotate是Ubuntu自帶的日志輪轉工具,可實現定期壓縮、備份、刪除舊日志,避免手動操作。
/etc/logrotate.conf(全局規則),服務特定配置文件/etc/logrotate.d/(如rsyslog、apt);/etc/logrotate.d/rsyslog):/var/log/syslog {
daily # 每天輪轉一次
rotate 7 # 保留最近7天的日志
compress # 壓縮舊日志(如syslog.1.gz)
delaycompress # 延遲壓縮(避免當日志輪轉失敗時占用空間)
missingok # 文件不存在時不報錯
notifempty # 文件為空時不輪轉
create 0640 root adm # 重新創建日志文件并設置權限
}
sudo logrotate -f /etc/logrotate.conf(強制執行輪轉,即使未達到配置條件)。/var/log下的auth.log(認證日志)、syslog(系統日志)、kern.log(內核日志)等文件對系統診斷至關重要,清理前需確認日志用途;logrotate配置為定時任務(默認已啟用,可通過sudo systemctl status cron檢查),或每周手動執行一次清理;df -h(查看磁盤使用情況)或du -sh /var/log/(查看/var/log目錄大?。?,及時發現日志膨脹問題;logrotate配置文件后,建議用sudo logrotate -d /etc/logrotate.d/rsyslog(調試模式)測試規則是否正確,避免配置錯誤導致日志丟失。