今天有个实习生问了我一个诡异的问题,“线下一台磁盘大小32G的开发机(虚拟机)打不出日志”,把追查过程和大家分享一下。

画外音:贵司开发机磁盘容量多大?

du一下,查看磁盘空间:

[shenjian@dev02 ~]# du -sch /16G /

画外音:似乎还有空间。

再试了一下df,发现结果不一样:

[shenjian@dev02 ~]$ df -h文件系统 容量 已用 可用 已用% 挂载点/dev/sda2 33G 33G 33G 100% //dev/sda1 965M 30M 886M 4% /boot

画外音:显示32G都用完了。

du:disk usage

通过搜索文件来计算每个文件的大小然后累加得到的值。

df:disk free

通过文件系统来获取空间大小的信息。

如果用户删除了一个正在运行的应用程序所打开的某个目录下的文件:

  • du命令返回的值,显示出减去了该文件后的总大小
  • df命令返回的值,则不显示减去该文件后的大小(文件句柄还在被使用),直到该运行的应用程序关闭了这个打开的文件(才会真正释放空间)

常见的场景是,删除了一个很大的正在写入的tomcat的access日志,du显示的结果会把日志大小减去,而df则仍会包含该日志的大小(实际上tomcat仍引用了该文件的句柄)。

对我们的启示是,如果要删除某个access日志,不要粗暴的rm,而要温柔的:

echo "" > access.log

画外音:朋友们,有没有rm过仍被引用的日志?

如何发现被应用程序引用着“已删除”文件呢?

lsof:list open files

使用lsof查看打开的文件。

lsof | grep deleted

结果显示,一个我的logsvr程序(跑了几个月了),和实习生写的web-server程序(实习大作业)呈现deleted状态,值得怀疑。

画外音:请在手机上把图放大。

最终定位出,是web-server程序中的一个:

while(pid=fork())

手误写成了:

while(pid==fork())

导致while内一直fork进程,直到将系统资源吃干。并且该进程已经成了zombie进程,无法kill掉,重启开发虚拟机后,问题得到解决。

画外音:我去,多了一个等号,这个bug好真实。

一分钟不长,希望大家有收获:

  • du:disk usage
  • df:disk free
  • lsof:list open files
  • echo "" > access.log

dev layoutview 怎么显示大小_「转」磁盘满了,为啥du却显示还有很大空间?相关推荐

  1. d盘不能扩展卷_「干货」磁盘分区能压缩还能扩展,这个教程让你秒会

    不少小黑粉刚拿到手的电脑只有C盘一个分区,如何给磁盘分区,大家可能都有一款压箱底的磁盘分区助手要推荐. 不过,相比大部分磁盘分区助手,Windows 10系统的分区设置方法最易学实用,还可以最大限度保 ...

  2. arduino蓝牙通讯代码_「Arduino」OLED屏使用教程,显示内容听谁的?我不管,听我的...

    玩转Arduino小伙伴肯定都接触过OLED屏吧,不管是在Arduino还是树莓派中都起到浓墨重彩的一笔,会写编程的同学也可以变换更多的花样. 材料清单: Arduino驱动板 x 1 OLED模块 ...

  3. 优先级调度算法实现_「kernel」 - 磁盘IO调度算法

    I/O调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色.要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能. 一.I/O调度程序的总结 当向设备读写数据时,请求被安置在一个队列 ...

  4. wdatepicker不显示秒_「超逸酷玩」秒秒测智能健康日历如何正确使用电子墨水屏...

    说到日历就会想到自己小的时候,每当年初家里大人都会把提前购买的日历装好,有挂墙上每天撕掉一张的日历,也有放在台历架上每天翻篇的日历,自己特别喜欢阅读日历上印刷的内容,当时有黄历.百科.笑话.故事等等内 ...

  5. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  6. 相同布局在不同手机上显示不同_不懂响应式,不同尺寸屏幕下的页面很难达到最佳效果...

    让用户在不同设备和尺寸的屏幕下看的页面显示效果更佳,屏幕空间利用更高,操作体验更统一,交互方式更符合习惯. 本文主要围绕什么是响应式,如何搭建响应系统,响应式网站解析 三个部分进行阐述,在项目中提前定 ...

  7. tomcat 不支持put 高版本_「MG6_DCT280」湿式七档双离合版本-性价比并不高

    上汽名爵_MG6定义为「掀背式运动轿车」,设计感很有些英伦风格,性能也确实可圈可点.然而这台车只有MT版本值得选择,即使在新款升级"DCT280"湿式七档双离合变速箱后也不例外.因 ...

  8. python决策树可视化_「决策树」| Part3—Python实现之可视化

    文章首发于微信公众号:AlgorithmDeveloper,专注机器学习与Python,编程与算法,还有生活. 1.前言 「决策树」| Part2-Python实现之构建决策树中我们已经可以基于给定数 ...

  9. 请求失败或服务未及时响应 有关详细信息_「干货」从零开始的微服务搭建之路...

    随着公司的业务发展,有幸经历了从单体应用迁移到分布式应用,又从分布式应用开始准备搭建微服务应用,以下是公司从零开始搭建微服务的过程,记录并分享出来,希望对大家有所帮助,我们先使用Spring Clou ...

最新文章

  1. 进阶学习(3.8) Component Pattern 组合模式
  2. UDP分两次接收数据包 MSG_PEEK
  3. python编程需要安装什么软件_[零基础学pythyon]安装python编程环境
  4. 图像滤波之高斯滤波介绍
  5. 图像中某点绕点旋转后的坐标,图像旋转坐标位置
  6. 给老师的建议?????
  7. 认识本质:黑天鹅、关键时刻与张小龙的产品观
  8. 设计散列表实现通讯录查找系统_[源码和文档分享]利用哈希表实现电话号码查询系统...
  9. python开发【基础二】
  10. 设置本地yum源优先
  11. 阐述SDN的原理、SDN使用场景、SDN技术的优缺点、SDN发展现状及分析SDN对社会和环境的影响
  12. 【调剂】西安工业大学刘欢教授“宽光谱量子点成像”科研团队接收5名调剂学生...
  13. 计算机专业和机械自动化哪个好,自动化和机械设计制造及其自动化有哪些区别?选哪个好呢?...
  14. 数字化转型中基于交付价值数据治理的6大原则
  15. Hadoop HDFS常用命令
  16. Makefile经典教程(掌握这些足够)
  17. Python基于PyTorch实现BP神经网络ANN回归模型项目实战
  18. LeetCode 面试题 峰与谷
  19. Android入门文档
  20. 机器视觉的来源与发展

热门文章

  1. R语言观察日志(part21)--包的组件之元数据
  2. Django(part5)--url匹配优先级
  3. mysql8.0日期类型_Mysql学习-数据类型(日期时间类型)
  4. SAP Spartacus breakpoint的决定逻辑
  5. SAP Spartacus cxFocus Directive施加后导致tabindex为-1的副作用研究
  6. :focus-within的冒泡触发
  7. SAP UI5 Negative cache的工作原理
  8. Kyma registration of webservices and event endpoints
  9. SAP Cloud Platform和S/4HANA的互联
  10. SAP CRM IBASE保存的逻辑分析