背景

E138: Can't write viminfo file /root/.viminfo!

Press ENTER or type command to continue

这不科学呀,明明是root,怎么可能无法写入?

后来查看磁盘inodes状态,发现/已经是100%,难怪无法写入。

df -i
Filesystem              Inodes   IUsed     IFree IUse% Mounted on
/dev/mapper/vg_db02-lv_root
                    3276800 3276800         0  100% /

inodes介绍

Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode也占用硬盘空间,硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

inodes资源耗尽

inodes使用完与存储空间使用完相似,都是创建不了文件或无法正常执行一些命令。inodes使用完,存储空间可能还有,这种情况一般是生成了大量的小文件,把inode table占满。

一般情况下存储空间使用完,inodes往往才使用百分之几,所以容易忽视对inodes使用情况的监控。

解决方案

通过以下脚本进行检查,查看到底哪个目录下面的文件最多

find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

通过以下脚本进行检查,查看到底哪个目录下面的文件最多:

for i in /*; do echo $i; find $i | wc -l; done

如果确定是某个目录下面,则/转换为该目录绝对路径,如/var/log

最终发现 /var/spool/postfix/maildrop/这个目录下有大量的文件,

可能是由于该目录有大量的文件导致的inodes满了

在 网上搜索之后明白是mail没有成功的邮件。由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的 形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面。如果sendmail或者postfix正常运 行,则会在/var/mail目录下也会堆积大量的邮件。

先停止任务计划

/etc/init.d/crond stop

然后我就直接清空目录所有文件

cd /var/spool/postfix/maildrop
rm -rf ./*

提示:-bash: /bin/rm: 参数列表过长

可以用

find . -name "*"|xargs rm -rf "*"

等待20分钟清理完成

再次查看,发现终于好了。

df -i
Filesystem              Inodes   IUsed     IFree IUse% Mounted on
/dev/mapper/vg_db02-lv_root3276800 2496138    780662   77% /

关闭任务计划通知

vi /etc/crontab

MAILTO=root

更改为

MAILTO=""

重启任务计划

/etc/init.d/crond restart

过了几天,发现这个目录居然还有文件

然后我在任务计划第一行添加

crontab -e

#关闭任务计划通知

MAILTO=""

任务计划里面有很多每分钟执行的计划,等待半个小时,发现目录是空的。

Ok,那就说明以后再也不会产生文件了。

linux中df -i 100%解决方案相关推荐

  1. thinkphp5部署于Linux中nginx多站点解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 问题简述:thinkphp5怎么在url访问中去掉public. 实验环境: Linux.nginx.mysql.php(ln ...

  2. linux中df命令用法,详细分析Linux df命令的使用方法

    Linux df命令是学习Linux管理的一个应用的一个简单的命令,但是简单的命令有时会给我们以巨大的帮助,这里详细介绍一下Linux df命令的使用. df命令详细用法 a:显示全部的档案系统和各分 ...

  3. linux df是否分区,Linux中df命令查询磁盘信息和fdisk命令分区的用法

    df - 报告文件系统磁盘空间的使用情况 总览 df [option]... [file]... posix 选项: [-kp] gnu 选项 (最短方式): [-ahhiklmpv] [-t fst ...

  4. linux中df和ls区别,linux系统文件大小ls、df、du命令的区别

    发现一台用户的电脑,df检查出来的/磁盘空间占用了16G,比用du查看得到的磁盘空间大的多,du查看/下所有程序目录加起来还不到5G.这是什么原因呢? 即便是有隐藏文件,查了也很小啊. 一.df和du ...

  5. Linux中网卡未激活解决方案

    查看网卡是否激活 ┌──(root㉿kali)-[~/Desktop] └─# nmcli device status 临时激活 [root@localhost ~]# nmcli device co ...

  6. linux PS -df,linux中ps跟df命令详解

    linux中ps和df命令详解 linux下PS命令 linux上进程有5种状态: 1.运行(正在运行或在运行队列中等待) 2.中断(休眠中,受阻,在等待某个条件的形成或接受到信号) 3.不可中断(收 ...

  7. linux中du命令参数的用法,linux中du命令参数及df命令和dd命令介绍

    本文详细介绍了linux中du命令参数及df命令和dd命令的使用方法,并对之进行了举例说明. linux中df命令参数 linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获 ...

  8. Linux之df命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 命令格式 df [选项] [文件] 命令功能 显 ...

  9. Linux最全面试题100问答,纯纯爽文

    目录 Linux初学者面试问题 Linux基本面试问题 Linux管理员面试问题 Linux命令面试问题 Linux网络面试问题 Linux管理员面试问题 Linux初学者面试问题 Linux基本面试 ...

最新文章

  1. python基础代码库-CNN详解-基于python基础库实现的简单CNN
  2. c++ 冒泡排序_学习笔记-详解冒泡排序
  3. [BZOJ] 1637: [Usaco2007 Mar]Balanced Lineup
  4. “APP杀手”?微信小程序瞬间原形毕露
  5. 【算法导论】第24章迪杰斯特拉算法
  6. 超详细 | 接口自动化测试总结与分享入门篇
  7. 计算机英语小短文单词易懂,少儿英语小短文:计算机
  8. 第一篇:工作之我见一-----------细节决定成败(1)
  9. MATLAB中saveas函数使用
  10. 如何修改wifi密码(wifi密码怎么修改在手机上怎么修改)
  11. 综合评价法——秩和比(RSR)
  12. windows 10最新版 电脑共享WIFI
  13. 怎样在手机设置无线网络连接服务器,如何用手机设置wifi路由器?
  14. CI框架中表单取值 $this-input-post('city');
  15. 使用Jenkins自动编译我的.net 项目
  16. 站长收入差距逐渐拉开 高收入站长稳步增加
  17. 黑客挂马紧盯娃娃 儿童节育儿教育网站被挂马
  18. JS 将指定内容复制到剪贴板
  19. 写出一个美观的表单页
  20. Linux set 命令的使用方法

热门文章

  1. Excel 中对2列数据进行“或”筛选
  2. 小程序图标库----之用css画对号和icon图标
  3. php中文网线上班怎么样,数组--PHP中文网第九期线上班
  4. TestableMock这一篇就够了
  5. 优酷视频转码MP4格式
  6. open cv roi提取_使用pytesseract open cv从扫描的pdf中提取文本
  7. 微信小程序获取用户头像并显示出来,很简单一行代码搞定!
  8. Ubuntu16.04下载地址
  9. Shell编程基础语法
  10. java什么是消息刷盘_Rocket重试机制,消息模式,刷盘方式