CentOS系統定期清理方法
臨時文件主要存儲在/tmp
、/var/tmp
及用戶主目錄的.cache
、.local/share/Trash
目錄中,定期清理可快速釋放磁盤空間。
rm
命令刪除目錄下文件(謹慎操作,避免誤刪系統文件):sudo rm -rf /tmp/* /var/tmp/* # 清理系統臨時目錄
rm -rf ~/.cache/* ~/.local/share/Trash/* # 清理用戶臨時文件
systemd-tmpfiles
(CentOS 7及以上)根據配置規則自動清理,也可通過tmpwatch
工具刪除指定時間未訪問的文件:sudo systemd-tmpfiles --clean # 按系統配置清理
sudo yum install tmpwatch && sudo tmpwatch 7d /tmp # 刪除7天未訪問的/tmp文件
cron
每天凌晨3點自動清理:sudo crontab -e
# 添加以下內容
0 3 * * * rm -rf /tmp/* /var/tmp/* && rm -rf ~/.cache/* ~/.local/share/Trash/*
日志文件(如/var/log/messages
、/var/log/secure
)會隨時間增長占用大量空間,可通過以下方式管理:
/etc/logrotate.d/messages_secure
):/var/log/messages /var/log/secure {
daily # 每天輪轉
rotate 7 # 保留7份舊日志
compress # 壓縮舊日志
missingok # 日志丟失不報錯
notifempty # 空日志不輪轉
create 640 root adm # 新日志權限
}
測試配置是否正確:sudo logrotate -f /etc/logrotate.conf
。sudo journalctl --vacuum-time=2weeks # 刪除2周前的日志
sudo journalctl --rotate # 手動旋轉日志
sudo find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \; # 刪除7天前的.log文件
包管理器(yum/dnf)的緩存會占用/var/cache
空間,定期清理可釋放資源:
sudo yum clean all # CentOS 7及以下
sudo dnf clean all # CentOS 8及以上
sudo yum clean metadata # 清理元數據(減少包查詢時間)
sudo yum clean packages # 清理下載的包文件
系統緩存(頁面緩存、目錄項緩存等)會占用內存,清理后可釋放內存,但可能短暫影響性能(建議在系統負載低時執行):
sync && echo 3 > /proc/sys/vm/drop_caches # 清理頁面緩存、目錄項緩存、inode緩存
卸載不再使用的軟件包及其依賴,減少系統冗余:
sudo yum autoremove # CentOS 7及以下
sudo dnf autoremove # CentOS 8及以上
舊內核會占用/boot
分區空間,保留當前使用的最新內核即可:
sudo package-cleanup --oldkernels --count=1 # 保留1個最新內核,刪除其余舊內核
將常用清理命令整合為腳本(如/usr/local/bin/cleanup.sh
),通過cron
定期執行:
#!/bin/bash
# 清理臨時文件
rm -rf /tmp/* /var/tmp/*
# 清理日志
journalctl --vacuum-time=3d
# 清理包緩存
yum clean all
# 清理系統緩存
sync && echo 3 > /proc/sys/vm/drop_caches
賦予腳本執行權限:sudo chmod +x /usr/local/bin/cleanup.sh
。
添加cron
任務(每天凌晨2點執行):
sudo crontab -e
# 添加以下內容
0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
rm -rf
:避免刪除系統關鍵文件(如/etc
、/boot
目錄下的文件)。find /tmp -type f -mtime +7
)。