Ubuntu日志文件清理方法
Ubuntu系統的日志文件主要存儲在/var/log
目錄下,長期積累會占用大量磁盤空間。以下是幾種安全有效的清理方法,覆蓋不同場景需求:
journalctl
是systemd的日志管理工具,專為systemd-journald生成的日志設計,操作便捷且安全。
journalctl --disk-usage
輸出示例:Archived and active journals take up 1.2G in the file system.
sudo journalctl --vacuum-time=1week
保留最近1個月的日志:sudo journalctl --vacuum-time=1month
sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-by-service=ssh.service
該方法無需直接操作/var/log
目錄,避免誤刪系統關鍵日志。適用于需要精準控制刪除內容的場景,但需注意不要刪除系統關鍵日志(如syslog
、auth.log
、kern.log
等)。
ls -l /var/log
syslog
文件(保留文件但清空內容):sudo > /var/log/syslog
find
命令快速清空/var/log
下所有.log
文件:sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
auth.log
(需確認該日志無后續用途):sudo rm /var/log/auth.log
?? 警告:避免使用sudo rm -rf /var/log/*
,可能導致系統無法診斷故障。logrotate
是Ubuntu自帶的日志輪轉工具,可自動壓縮、刪除舊日志,無需手動干預。
/etc/logrotate.conf
定義了全局規則,服務級配置在/etc/logrotate.d/
目錄下(如rsyslog
對應系統日志):cat /etc/logrotate.conf
cat /etc/logrotate.d/rsyslog
sudo logrotate -f /etc/logrotate.conf
/etc/logrotate.d/rsyslog
,修改為保留7天日志并壓縮:/var/log/syslog {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
參數說明:daily
(每日輪轉)、rotate 7
(保留7份)、compress
(壓縮舊日志)。通過find
命令按時間或類型篩選日志文件,適合清理特定時間段的日志。
sudo find /var/log -type f -name "*.log" -mtime +7 -delete
參數說明:-mtime +7
(7天前修改的文件)、-delete
(刪除匹配文件)。sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
該方法不會刪除文件,僅清空內容,適合保留文件結構但釋放空間。/home
目錄),防止誤刪導致故障無法排查。df -h
命令確認磁盤空間是否釋放。通過上述方法,可有效管理Ubuntu系統日志,平衡磁盤空間與系統可維護性。