定期自動清理CentOS系統可通過以下方式實現,核心方法包括使用cron定時任務、systemd定時器及系統自帶工具:
cron定時任務(推薦)創建清理腳本
編寫腳本(如/usr/local/bin/cleanup.sh),包含清理邏輯,例如:
#!/bin/bash
# 清理臨時文件
rm -rf /tmp/*
rm -rf /var/tmp/*
# 清理7天前的日志
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
# 清理包管理器緩存
yum clean all # 或 dnf clean all
賦予執行權限:chmod +x /usr/local/bin/cleanup.sh。
配置cron任務
編輯crontab文件:sudo crontab -e,添加定時規則(如每天凌晨2點執行):
0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
保存后可通過crontab -l查看任務。
systemd定時器(CentOS 7+)創建服務單元文件
編輯/etc/systemd/system/cleanup.service:
[Unit]
Description=System Cleanup Service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cleanup.sh
```。
創建定時器單元文件
編輯/etc/systemd/system/cleanup.timer:
[Unit]
Description=Run Cleanup Daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
啟用并啟動定時器:
sudo systemctl enable --now cleanup.timer。
logrotate管理日志
編輯/etc/logrotate.conf或創建自定義配置(如/etc/logrotate.d/myapp),設置日志輪轉和壓縮策略,例如:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
}
手動測試:logrotate -f /etc/logrotate.conf。
清理YUM/DNF緩存
執行命令:sudo yum clean all(或dnf clean all),可結合cron定期運行。
truncate清空日志或通過find按時間刪除。/var/log/cleanup.log確認任務執行情況。以上方法可根據需求選擇,cron適合通用場景,systemd適合需要精準控制的場景,系統工具則可簡化特定清理操作。