温馨提示×

Ubuntu spool为何满

小樊
42
2026-08-23 23:18:42
栏目: 智能运维

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 下载缓存(较少)

二、最常见原因 1:打印队列爆满(CUPS)

现象

  • /var/spool/cups 很大
  • 打印机卡住、重复打印
  • 磁盘空间突然减少

解决

1️⃣ 查看打印队列

lpstat -o

2️⃣ 清空打印队列

sudo cancel -a

或:

sudo rm -rf /var/spool/cups/*

⚠️ 建议先停服务再删

sudo systemctl stop cups
sudo rm -rf /var/spool/cups/*
sudo systemctl start cups

三、常见原因 2:邮件队列堆积(postfix / sendmail)

现象

  • /var/spool/postfix/var/spool/mail 很大
  • 系统有大量 cron 输出邮件

检查

sudo du -sh /var/spool/postfix
mailq

清理邮件队列

sudo postsuper -d ALL

或:

sudo rm -rf /var/spool/postfix/*

四、常见原因 3:cron 输出未处理

现象

  • /var/spool/cron/var/mail 很大
  • cron 任务频繁执行并输出内容

原因

  • cron 默认把输出 发邮件给 root
  • 邮件堆积

解决

1️⃣ 查看 cron 邮件

sudo cat /var/mail/root

2️⃣ 临时清理

sudo truncate -s 0 /var/mail/root

3️⃣ 防止再发生(推荐)

* * * * * /path/script.sh >/dev/null 2>&1

或配置 MAILTO=""


五、常见原因 4:日志缓冲(rsyslog / journal)

有时 /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/*

0