温馨提示×

Debian spool为何满

小樊
36
2026-07-17 01:35:49
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)里,spool 目录满了通常是指 /var/spool 下的某个子目录占用了大量磁盘空间。spool 本身不是“一个东西”,而是多个队列/缓冲目录的集合。常见原因和排查方法如下:


一、/var/spool 里常见目录及用途

目录 用途
/var/spool/mail / /var/mail 本地用户邮件
/var/spool/cron cron 任务
/var/spool/cups 打印队列
/var/spool/rsyslog 日志缓冲
/var/spool/postfix Postfix 邮件队列
/var/spool/exim4 Exim 邮件队列
/var/spool/apt apt 下载缓存
/var/spool/lpd 老式打印

二、最常见原因(按概率)

1️⃣ 邮件队列堆积(最常见)

本地系统用户(root、www-data、nobody 等)收到大量邮件,或邮件发送失败堆积。

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

或:

ls -lh /var/spool/mqueue* 2>/dev/null

✅ 解决:

# 查看邮件
mail
# 清空某个用户邮箱
> /var/mail/username

2️⃣ Postfix / Exim 邮件队列爆满

常见于服务器被当成垃圾邮件中转。

mailq
postqueue -p

✅ 检查是否被滥用:

grep "relay" /var/log/mail.log

✅ 清空队列(谨慎):

postsuper -d ALL

3️⃣ CUPS 打印队列未清理

打印机异常导致任务堆积。

lpstat -o

✅ 清空:

cancel -a

4️⃣ APT 缓存或临时文件

虽然 apt 主要在 /var/cache/apt,但 spool 也可能有残留。

du -sh /var/spool/apt

✅ 清理:

apt clean
apt autoclean

5️⃣ 日志或 rsyslog spool 文件异常

rsyslog 在磁盘满或异常时可能堆积。

du -sh /var/spool/rsyslog

三、快速定位是哪个目录占满

1️⃣ 先看整体

df -h
du -sh /var/spool

2️⃣ 找出具体目录

du -h --max-depth=2 /var/spool | sort -hr | head

3️⃣ 找出大文件

find /var/spool -type f -size +100M

四、典型真实案例

案例 1

cron 任务输出未重定向,导致 /var/spool/mail/root 达到几十 GB

案例 2

Postfix 被爆破,/var/spool/postfix 塞满

案例 3

打印机卡住,/var/spool/cups 堆积


五、安全建议

  • cron 任务输出重定向:
* * * * * /script.sh >/dev/null 2>&1
  • 邮件服务不要对外开放 25 端口
  • 定期监控 /var/spool 大小

如果你愿意,可以直接贴出:

du -sh /var/spool/*

我可以帮你精确判断是哪一种情况,并给出最安全的清理方案

0