温馨提示×

为什么ubuntu spool满了

小樊
38
2026-10-07 04:32:56
栏目: 智能运维

在 Ubuntu(以及绝大多数 Linux 系统)里,spool 满了通常指的是 /var/spool 目录占满磁盘空间,常见表现有:

  • No space left on device
  • 邮件发不出去 / 接收异常
  • 打印任务卡住
  • 系统日志或任务调度异常

下面按常见原因 → 位置 → 解决办法来说明。


一、最常见原因

1️⃣ 邮件 spool 满了(/var/spool/mail 或 /var/spool/postfix)

很多服务器程序(cron、系统服务)会通过邮件通知,但没人收,就会堆积。

常见位置:

/var/spool/mail/
/var/spool/postfix/

检查:

du -sh /var/spool/mail/*

解决:

# 清空某个用户的邮件
> /var/spool/mail/username

# 或删除 postfix 队列
postsuper -d ALL

2️⃣ 打印 spool 满了(/var/spool/cups)

打印任务失败、卡死会导致 spool 爆满。

位置:

/var/spool/cups/

解决:

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

3️⃣ cron / at spool 堆积(/var/spool/cron)

如果大量 cron 任务创建但没清理,也可能占空间。

位置:

/var/spool/cron/
/var/spool/at/

检查:

ls -lh /var/spool/cron/

4️⃣ 系统未清理的临时 spool 文件

例如:

  • anacron
  • mailman
  • exim
  • rsyslog

二、快速排查方法(必做)

1️⃣ 先看磁盘是不是真的满了

df -h

2️⃣ 找到 spool 里谁最大

sudo du -sh /var/spool/*

3️⃣ 继续往下找

sudo du -sh /var/spool/mail/*
sudo du -sh /var/spool/postfix/*

三、长期解决方案(防止再满)

✅ 1. 禁止 cron 发无用邮件

在 crontab 里加:

MAILTO=""

或重定向:

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

✅ 2. 配置日志 / 邮件轮转

sudo apt install logrotate

✅ 3. 定期清理(示例)

# 每周清理 mail spool
0 3 * * 0 find /var/spool/mail -type f -size 0 -delete

四、总结一句话

Ubuntu 的 spool 满了,99% 是邮件或打印队列没清理,尤其是 cron 邮件堆积。

如果你愿意,可以把下面命令的输出贴出来,我可以帮你精确定位是哪一类 spool 满了:

df -h
sudo du -sh /var/spool/*

0 踩