centos spool文件夹清理技巧
小樊
33
2025-11-19 19:33:48
CentOS spool 文件夹清理技巧
一 先定位占用来源
- 查看整体磁盘与目录占用:
- 查看分区使用:df -h
- 查看各子目录大小:du -sh /var/spool/* | sort -h
- 常见占用点与用途:
- 打印队列:/var/spool/cups
- 邮件投递队列:/var/spool/postfix(如 maildrop、deferred 等子目录)
- 本地用户邮件:/var/spool/mail
- 邮件队列(Sendmail):/var/spool/clientmqueue
- 临时/缓冲:/var/spool/cron、/tmp(部分系统或应用也会在 spool 下使用)
二 安全清理各类型 spool
- 打印队列(CUPS)
- 查看状态:lpstat -p -d
- 取消全部作业:cancel -a
- 清理目录:rm -rf /var/spool/cups/*
- 必要时重启服务:systemctl restart cups
- 邮件队列(Postfix)
- 安全清空队列:postsuper -d ALL
- 仅清理延迟队列:postsuper -d deferred
- 清理客户端 mqueue:find /var/spool/clientmqueue -type f -mtime +7 -delete
- 本地用户邮件(mbox)
- 按时间清理:find /var/spool/mail -type f -mtime +30 -delete
- 临时与缓冲
- 系统临时:find /tmp -mindepth 1 -mtime +1 -delete
- 谨慎操作 cron spool:/var/spool/cron 存放计划任务脚本,直接删除可能导致任务丢失,建议先备份再处理
三 自动化与预防
- 定时任务(cron)
- 示例(每日 2:00 清理临时与邮件):
- 0 2 * * * find /tmp -mindepth 1 -mtime +1 -delete
- 0 2 * * * find /var/spool/mail -type f -mtime +30 -delete
- 0 2 * * * find /var/spool/clientmqueue -type f -mtime +7 -delete
- 使用 systemd 一次性清理服务
- 创建服务文件:/etc/systemd/system/cleanup-spool.service
- 内容:
- [Unit]
- Description=Cleanup spool files
- [Service]
- Type=oneshot
- ExecStart=/usr/bin/find /tmp -mindepth 1 -mtime +1 -delete
- ExecStart=/usr/bin/find /var/spool/mail -type f -mtime +30 -delete
- ExecStart=/usr/bin/find /var/spool/clientmqueue -type f -mtime +7 -delete
- [Install]
- WantedBy=multi-user.target
- 启用:systemctl enable --now cleanup-spool.service
- 源头治理
- 优化/减少 cron 邮件输出,降低 /var/spool/postfix/maildrop 堆积
- 配置 logrotate 对日志轮转,避免日志或缓冲间接触发 spool 增长
- 建立例行巡检:df -h、du -sh /var/spool 与关键子目录,设置阈值告警
四 注意事项与回退方案
- 操作前先备份关键目录(如邮件、打印队列):cp -r /var/spool/mail /var/spool/mail_backup_$(date +%F)
- 清理邮件队列时优先使用 postsuper 等队列管理工具,避免直接 rm 导致队列不一致
- 清理 /var/spool/cron 前务必确认任务脚本是否仍在使用,必要时先备份
- 清理 /tmp 时避免删除正在被使用的文件或目录,建议使用按时间/条件的 find 删除策略
- 清理后重启相关服务(如 postfix、cups),并观察队列与磁盘是否恢复正常