在 Ubuntu 中,spool(/var/spool)占用过多空间或内存通常与打印队列、邮件队列、cron 任务、临时任务队列等有关。下面按常见场景给你排查和优化方案。
du -sh /var/spool/*
常见目录说明:
| 目录 | 用途 |
|---|---|
/var/spool/cups |
CUPS 打印队列 |
/var/spool/mail |
用户邮件 |
/var/spool/cron |
cron 任务 |
/var/spool/postfix |
Postfix 邮件队列 |
/var/spool/apt |
APT 下载缓存 |
/var/spool/lpd |
旧式打印队列 |
如果 /var/spool/cups 很大:
ls -lh /var/spool/cups
✅ 清理方法:
sudo systemctl stop cups
sudo rm -rf /var/spool/cups/*
sudo systemctl start cups
或只删除旧任务:
sudo cancel -a
如果 /var/spool/postfix 很大:
mailq
✅ 清理:
sudo postsuper -d ALL
或停止服务:
sudo systemctl stop postfix
sudo rm -rf /var/spool/postfix/*
sudo systemctl start postfix
⚠️ 如果是 垃圾邮件中继,需检查是否被入侵。
ls -lh /var/spool/mail
清理某个用户:
sudo truncate -s 0 /var/spool/mail/用户名
sudo du -sh /var/spool/apt
清理:
sudo apt clean
sudo apt autoclean
检查:
ls /var/spool/cron
ls /var/spool/at
一般不需要删除,但异常增长可以清理:
sudo rm -f /var/spool/at/*
/var/spool 一般不会直接占用内存
但可能是:
检查是否有 tmpfs:
mount | grep spool
df -h
如果看到类似:
tmpfs on /var/spool
说明是内存文件系统,重启或清理即可释放。
echo "=== spool 使用情况 ==="
du -sh /var/spool/*
echo "=== CUPS 打印队列 ==="
lpstat -o 2>/dev/null
echo "=== 邮件队列 ==="
mailq 2>/dev/null
echo "=== 内存映射 ==="
mount | grep spool
你可以把下面几条命令的输出贴出来,我能精准判断是哪一类问题:
du -sh /var/spool/*
df -h
systemctl status cups
✅ 如果是服务器
✅ 如果是桌面
✅ 是否运行了 Docker / 邮件服务
我可以直接给你安全清理方案。