溫馨提示×

如何自定義CentOS Cleanup規則

小樊
44
2025-10-05 02:23:46
欄目: 智能運維

一、系統級臨時文件清理規則(systemd管理,CentOS 7及以上)
CentOS 7及以上版本使用systemd-tmpfiles-clean.service管理臨時文件清理,核心配置文件位于/usr/lib/tmpfiles.d/tmp.conf(系統默認規則)。若需自定義,可通過以下方式擴展:

  • 覆蓋或新增規則:在/etc/tmpfiles.d/目錄下創建自定義配置文件(如custom-cleanup.conf),添加符合tmpfiles.d語法的規則。例如,保留/tmp下以tomcat開頭的目錄(避免Tomcat上傳目錄被清理),可添加:
    x /tmp/tomcat.*
    
    其中,x表示“排除”(不清理匹配路徑),支持shell風格通配符(如*、?)。
  • 規則語法說明
    • v /path permissions owner group age:清理指定路徑下age(如10d表示10天前)未修改的文件/目錄;
    • x /path:排除指定路徑(不清理);
    • X /path:排除指定路徑自身(但清理其子內容)。
  • 驗證規則:修改配置后,重啟systemd-tmpfiles-clean.service使規則生效:
    sudo systemctl restart systemd-tmpfiles-clean.service
    
    或手動觸發清理:
    sudo systemd-tmpfiles --clean
    

二、日志文件清理規則(logrotate工具)
日志文件是磁盤空間占用的主要來源之一,通過logrotate可實現定期輪轉、壓縮和刪除舊日志。自定義規則需編輯/etc/logrotate.conf(全局配置)或在/etc/logrotate.d/下創建應用特定配置(如nginx、mysql):

  • 基礎配置示例(針對/var/log/*.log):
    /var/log/*.log {
        daily           # 每日輪轉
        missingok       # 忽略缺失日志文件
        rotate 7        # 保留7個舊日志
        compress        # 壓縮舊日志(gzip)
        notifempty      # 空日志不輪轉
        create 0640 root root  # 新日志權限與所有者
    }
    
  • 高級選項
    • size 100M:當日志文件超過100MB時立即輪轉(可替代daily);
    • postrotate/endscript:輪轉后執行的命令(如重啟服務刷新日志句柄):
      postrotate
          systemctl restart nginx
      endscript
      
  • 手動測試:使用logrotate -vf /etc/logrotate.conf強制運行并顯示詳細過程。

三、YUM/DNF緩存清理規則
YUM(CentOS 7及以下)或DNF(CentOS 8及以上)的緩存會占用/var/cache/yum(或/var/cache/dnf)目錄,可通過以下命令自定義清理:

  • 清理所有緩存(包括軟件包和元數據):
    sudo yum clean all  # CentOS 7及以下
    sudo dnf clean all  # CentOS 8及以上
    
  • 僅清理過期緩存(不刪除現有軟件包緩存):
    sudo yum clean expire-cache  # CentOS 7及以下
    sudo dnf clean expire-cache  # CentOS 8及以上
    
  • 自動化清理:將上述命令添加到定時任務(如每周日凌晨2點執行):
    sudo crontab -e
    
    添加以下行:
    0 2 * * 0 /usr/bin/yum clean all  # CentOS 7及以下
    0 2 * * 0 /usr/bin/dnf clean all  # CentOS 8及以上
    

四、孤立包與舊內核清理規則

  • 孤立包清理(無依賴的軟件包):使用package-cleanup工具(需安裝yum-utils):
    sudo yum install yum-utils -y
    sudo package-cleanup --leaves  # 列出孤立包
    sudo package-cleanup --leaves --dry-run  # 模擬刪除(不實際執行)
    sudo package-cleanup --leaves --yes  # 實際刪除
    
  • 舊內核清理(保留最近n個內核):
    sudo package-cleanup --oldkernels --count=2  # 保留2個最新內核,刪除其余
    
    可將上述命令添加到定時任務,定期清理孤立包和舊內核。

五、大文件與舊文件清理規則
使用find命令查找并刪除指定條件的文件(如大于100MB的文件、30天未修改的文件):

  • 查找并刪除大于100MB的文件
    sudo find /path/to/search -type f -size +100M -exec ls -lh {} \;  # 先查看文件
    sudo find /path/to/search -type f -size +100M -exec rm -f {} \;  # 再刪除
    
  • 查找并刪除30天未修改的文件
    sudo find /path/to/search -type f -mtime +30 -exec rm -f {} \;
    
  • 自動化腳本:將上述命令封裝為腳本(如cleanup-large-files.sh),并通過cron定期執行:
    sudo crontab -e
    
    添加以下行(每天凌晨3點執行):
    0 3 * * * /usr/local/bin/cleanup-large-files.sh >> /var/log/cleanup.log 2>&1
    

六、自動化與監控

  • 定時任務:使用crontab -e配置定時任務,將清理腳本設置為定期執行(如每天、每周),確保清理工作自動化。
  • 監控與報警:使用df -h(磁盤空間)、free -h(內存)命令定期檢查資源使用情況,或通過Nagios、Prometheus等工具設置報警閾值(如磁盤空間超過80%時報警)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女