第一眼看到这个错误是不是就觉的是磁盘满了呢,但是df看怎么都没有100%占用的。没错,原始的感觉是对的,但是分叉路不对,习惯了df -h,就忘记了inode这东西,因为它也会满,所以要双管齐下
先df -h查看磁盘文件大小占用的空间,有则清理
如果df -h查看磁盘未满,就df -i 查看inode占用比例,如果满也是清理
不过inode清理需要找到是哪里占用了,不像du -hs一样能从上往下查到某个文件,不过大概率都是文件太多导致inode被用光了,查找的方法可以参考cnblog前人共享的方式
for i in /var/*; do echo $i; find $i |wc -l; done
这里粘贴一个本人遇到的案例,/var/spool/postfix/maildrop目录下的文件。这个里面包含了cron定时任务发送给root的内容,定义在/etc/crontab里面:
# head /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
把MAILTO=root改成MAILTO="", 重启systemctl restart crond.service就不会再生成文件了
看到这里才理解,为什么之前看到crontab里面的定时任务都会重定向到/dev/null,都是有意义的