Ubuntu Spool占用过多空间的定位与清理
一、快速定位占用来源
sudo du -sh /var/spool/* | sort -hr,按大小排序找出占用最大的子目录(如 /var/spool/cups、/var/spool/mail、/var/spool/postfix、/var/spool/clientmqueue 等)。du -sh /var/spool/cupsdu -sh /var/spool/mail 或 sudo du -sh /var/spool/postfixdu -sh /var/spool/mqueuedu -sh /var/spool/mail/*du -sh /var/spool/clientmqueuelpstat -p -d 查看打印机与待处理作业;必要时 cancel -a 取消全部打印任务。二、按服务逐项清理
sudo systemctl stop cupssudo rm -rf /var/spool/cups/*sudo systemctl start cupscancel -a 再重试。mailqsudo postsuper -d ALL 删除所有队列邮件;仅在确认无重要待发邮件时,才用 sudo rm -rf /var/spool/postfix/*。ls -l /var/spool/mqueuesudo rm -f /var/spool/mqueue/*ls -l /var/spool/mailsudo rm -f /var/spool/mail/<用户名>(谨慎,确保邮件不再需要)。sudo systemctl stop postfix && sudo rm -rf /var/spool/clientmqueue/* && sudo systemctl start postfix。echo "MAILTO=\"\"" | sudo tee -a /etc/crontab 或在对应用户的 crontab 首行加入 MAILTO=""。sudo find /var/spool -type d -name "<应用名>"sudo find /var/spool/<应用名> -type f -mtime +7 -delete。三、清理后的优化与防复发
0 3 * * * sudo systemctl stop cups && sudo rm -rf /var/spool/cups/* && sudo systemctl start cups0 3 * * * sudo systemctl stop postfix && sudo rm -rf /var/spool/clientmqueue/* && sudo systemctl start postfix0 2 * * 0 sudo find /tmp -mtime +7 -delete && sudo find /var/tmp -mtime +30 -deleteMAILTO="")。vm.swappiness(示例:sudo sysctl -w vm.swappiness=10,并写入 /etc/sysctl.conf 永久生效),有助于缓解内存压力与频繁写盘,但对 /var/spool 占用并非直接原因。四、安全注意事项
rm -rf、postsuper -d ALL)会直接清除待处理任务或邮件,务必先确认无重要业务数据。sudo tar czf /root/spool-backup-$(date +%F).tgz /var/spool。cancel、lpstat、postsuper),避免误删正在处理的任务。rm -rf /tmp/* 或 /var/tmp/* 前,确认无关键进程在使用这些临时文件,避免影响正在运行的程序。