Ubuntu 中 spool(缓冲/队列目录)满了,通常不是“spool 本身”的问题,而是某个服务把临时数据写满了磁盘。最常见的是 打印队列、邮件队列、cron 任务输出、日志缓冲 等。
下面按最常见 → 较少见的顺序说明原因和处理方法。
/var/spool 被哪些东西占用?先确认是 哪个 spool 子目录 满了:
sudo du -sh /var/spool/*
常见目录含义:
| 目录 | 用途 |
|---|---|
/var/spool/cups |
CUPS 打印队列(最常见) |
/var/spool/mail |
本地用户邮件 |
/var/spool/cron |
cron 任务 |
/var/spool/rsyslog |
日志缓冲 |
/var/spool/postfix |
Postfix 邮件队列 |
/var/spool/apt |
apt 下载缓存(较少) |
/var/spool/cups 很大lpstat -o
sudo cancel -a
或:
sudo rm -rf /var/spool/cups/*
⚠️ 建议先停服务再删
sudo systemctl stop cups
sudo rm -rf /var/spool/cups/*
sudo systemctl start cups
/var/spool/postfix 或 /var/spool/mail 很大sudo du -sh /var/spool/postfix
mailq
sudo postsuper -d ALL
或:
sudo rm -rf /var/spool/postfix/*
/var/spool/cron 或 /var/mail 很大1️⃣ 查看 cron 邮件
sudo cat /var/mail/root
2️⃣ 临时清理
sudo truncate -s 0 /var/mail/root
3️⃣ 防止再发生(推荐)
* * * * * /path/script.sh >/dev/null 2>&1
或配置 MAILTO=""
有时 /var/spool/rsyslog 也会增长。
sudo du -sh /var/spool/rsyslog
可清理或重启 rsyslog:
sudo systemctl restart rsyslog
如果不确定,用这个命令最直观:
sudo du -h --max-depth=2 /var | sort -hr | head
或:
df -h
du -sh /var/spool/*
✅ 80% 情况:/var/spool/cups(打印队列)
✅ 10% 情况:邮件队列 / cron 输出
✅ 5% 情况:日志缓冲
✅ 5% 情况:异常程序写 spool
如果你愿意,可以把下面命令的输出贴出来,我可以直接帮你判断是哪一种:
df -h
du -sh /var/spool/*