清理Ubuntu系統“backlog”(主要指系統日志、臨時文件、緩存等積壓數據)的方法
系統日志存儲在/var/log
目錄下,長期積累會占用大量磁盤空間。以下是常用清理方法:
journalctl
命令(Systemd系統專用)journalctl
是管理Systemd日志的工具,可精準清理舊日志或特定服務的日志:
journalctl --disk-usage
(確認當前日志占用空間);sudo journalctl --vacuum-time=2weeks
(刪除兩周前的所有日志);sudo journalctl --vacuum-size=100M
(保留最近100MB日志,刪除舊日志);sudo journalctl --vacuum-by-service=ssh.service
(僅刪除SSH服務的日志);sudo journalctl -f
(實時監控日志,按Ctrl+C
停止后可針對性清理)。若需更直接的控制,可手動刪除/var/log
下的特定日志文件(操作前需確認文件用途):
ls -l /var/log
;syslog
):sudo > /var/log/syslog
(不清除文件本身,僅清空內容);sudo rm /var/log/auth.log
(刪除認證日志,需確認不影響系統診斷)。logrotate
工具(自動定期清理)logrotate
是Ubuntu默認的日志管理工具,可自動輪轉、壓縮、刪除舊日志:
cat /etc/logrotate.conf
(了解全局設置,如保留7天日志);rsyslog
):sudo nano /etc/logrotate.d/rsyslog
,修改為以下內容(保留7天日志,每天輪轉并壓縮):/var/log/syslog {
rotate 7
daily
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
sudo logrotate -f /etc/logrotate.conf
(立即執行輪轉,無需等待定時任務)。臨時文件(如/tmp
、/var/tmp
)可能包含無用數據,占用磁盤空間:
/tmp
下所有文件:sudo rm -rf /tmp/*
(/tmp
下的文件通??稍谥貑⒑笞詣忧宄?,但手動清理更及時);/var/tmp
下舊文件(保留7天以上):sudo find /var/tmp -type f -mtime +7 -exec rm -rf {} \;
(-mtime +7
表示7天前修改的文件)。系統緩存(頁面緩存、目錄項緩存等)可釋放內存,但過度清理可能影響性能:
sudo sync
(確保未寫入磁盤的數據保存);sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
(3
表示釋放頁面緩存、目錄項緩存和inode緩存)。若使用Postfix作為MTA,郵件隊列積壓可能導致磁盤空間不足:
mailq
(顯示未發送的郵件);sudo postsuper -d ALL
(謹慎使用,會刪除所有未處理郵件)。打印任務積壓可通過以下命令清理:
lpstat -p
(顯示打印任務);cancel -a
(取消所有打印機的任務)。Cron任務積壓可能因任務失敗或頻繁執行導致:
crontab -l
;crontab -e
(刪除或注釋無用任務,如重復執行的腳本)。為避免手動操作,可通過cron
設置定時任務,定期執行清理:
sudo crontab -e
;0 3 * * * /usr/bin/journalctl --vacuum-time=7d
(每天凌晨3點清理7天前的日志)。/var/log
目錄(如sudo tar -czvf /backup/logs.tar.gz /var/log
),以防需要查閱歷史記錄;/var/log/syslog
、/var/log/kern.log
)可能影響故障排查,建議保留最近7-14天的日志;/tmp
),確認無誤后再擴展到其他目錄。