解决命令行提示“cannot create temp file for here-document: No space left on device”但磁盘使用率并未满的问题

问题如题,出现“cannot create temp file for here-document: No space left on device”,且部分应用出现故障,比如重启后Docker容器无法启动

先使用 df -h

检查磁盘使用率,显示使用率50%还不到

继续排查,使用 lsof | grep deleted  或 lsof -w | grep deleted 检查是否存在未释放的已删大文件,未发现

继续使用 df -i ,发现inodes使用率99%,到此问题找到。

依次使用如下命令,定位目录:

for i in /var/*; do echo $i; find $i |wc -l; done
for i in /var/tmp/*; do echo $i; find $i |wc -l; done
for i in /var/spool/*; do echo $i; find $i |wc -l; done
for i in /var/spool/postfix/*; do echo $i; find $i |wc -l; done

发现问题出在Crontab中设置了2个1分钟级别的定时任务,请过长期运行,执行完毕后都会使用系统邮件功能进行通知,最终导致inodes数量不够用。

解决方法:

直接删除/var/spool/postfix/maildrop中的所有文件。由于数量较多,删除时间会比较久,耐心等待即可。这里需注意,postfix服务是不能关闭的,crontab的运行需要依赖该服务,但是可以通过以下命令停止postfix的系统邮件。

echo "unset MAILCHECK">> /etc/profile
source /etc/profile
chmod 0 /usr/sbin/sendmail
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
cat /dev/null > /var/spool/mail/root

posted @   Don  阅读(1199)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示