您现在的位置是:亿华云 > 域名
磁盘满了,为啥du却显示还有很大空间?
亿华云2025-10-09 03:28:15【域名】1人已围观
简介今天有个实习生问了我一个诡异的问题,“线下一台磁盘大小32G的开发机(虚拟机)打不出日志”,把追查过程和大家分享一下。画外音:贵司开发机磁盘容量多大?先du一下,查看磁盘空间:[shenjian@de
今天有个实习生问了我一个诡异的磁盘满了问题,“线下一台磁盘大小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查看打开的文件。b2b信息网
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【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】
戳这里,看该作者更多好文
很赞哦!(23592)
相关文章
- 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
- 为JMeter用户和测试者准备的六种Docker镜像
- 四个问题,Yoshua等27位前沿研究者,这是一份NLP领域的请回答2018
- 程序员的快速开发框架:Github上10大优秀的开源后台控制面板
- 付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。
- GitHub超过2600星的TensorFlow教程,简洁清晰还不太难
- 如何在产品开发中轻松有效地使用AR技术
- 如何在2周内交付85%以上需求?阿里工程师这么做
- 众所周知,com域名拥有最大的流通市场和流通历史。最好选择com域名,特别是在购买域名时处理域名。其次可以是cn域名、net域名、org域名等主流域名,现在比较流行的王域名和顶级域名,都是值得注册和投资的。
- 8个用于业余项目的优秀Python库