最近清理磁盘文件时,删除了一个nohup.out文件,发现其占用的磁盘空间并没有被释放。最终找到关联的进程,杀掉进程后,磁盘空间才被释放。
使用ls -al查看/proc下的文件描述符(fd),发现它们是软连接(lr-x——),为什么删除掉文件后,磁盘空间没有被释放呢?
因为在类 UNIX 系统中,当一个文件的 link count 减为零并且所有已打开的文件描述符全部关闭、所有 mmap 的部分全部 unmap 时,系统才会真正将该文件占用的存储空间标记为未使用。这和 Windows 使用的策略是不一样的。
PS: 这个属于类 UNIX 系统基本常识了。提问者要多加了解和学习啊。
PPS: 日志还是直接交给 syslog 吧,然后用 logrotate 轮转,就不用自己处理各种麻烦事了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。