No space left on device的发现与解决

首先,df -h 查看磁盘容量。

如果磁盘已满,那么清理磁盘。

如果容量未满,那么 df -i 查看磁盘inode信息。

常见情况是 /var/spool/postfix/maildrop 或 /var/spool/clientmqueue 目录有太多零碎文件导致 inode 使用达到100%。

原理分析:

linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送Cron所有者,而由于系统环境中的sendmail和postfix没有正常运行,导致邮件发送不成功,全部小文件堆积在了clientmqueue 和 maildrop目录下面,而且没有自动清理转换的机制,所以长时间累积导致此目录堆积了大量的文件。(注意:如果sendmail或者postfix正常运行,则会在/var/mail目录下产生大量的邮件,也会堆积。)

删除大量文件方法

find /var/spool/mqueue /var/spool/clientmqueue 可以多个目录 空格分开 -name “*” | xargs rm -rfv ‘*’

清除所有缓存垃圾邮件 清除邮件中的所有队列 postsuper -d ALL

解决办法1:

列出所有用户的定时任务

for u in `cat /etc/passwd | cut -d”:” -f1`;do crontab -l -u $u;done

crontab里面定时执行的句子结尾加 “ > /dev/null 2>&1 ”,不输出内容。

(网上最常见解决办法,测试无效。)

解决办法2:

在cron的第一行加入 MAILTO=””,这样执行当前用户的Cron时,不会发送邮件。

解决办法3:

卸载 sendmail 和 postfix邮件服务

注:编辑定时任务 crontab -e

除非注明,否则均为JozeCN博客原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.jozecn.cn/150.html

为您推荐

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注