日期:2014-05-16 浏览次数:21004 次
哪些进程依旧打开了这些文件,如果有,立即从其文件描述符恢复,recovering files from /proc
但是,"Every coin has two sides",以上是fd的优点,不过这也给Linux用户造成一个现象:
为啥有时候df -h看磁盘剩余空间很小,而du -shc看具体目录大小,又没有占用那么多呢?
也就是说,文件删除后,空间并没有得到释放
这很可能是有的文件删除了,但是还被某些进程占用着文件句柄
lsof | grep delete 看看,是不是有进程占用了被删除的文件句柄
重启下这些进程kill -HUP释放文件句柄即可
删除文件后应该释放文件句柄才能释放空间
至于名字,windows上叫文件句柄,Linux上叫文件描述符,英文缩写是fd
每个进程至少都会打开三个文件:标准输入,标准输出,标准错误输出
他们对应的文件句柄是:0,1,2
涉及到文件句柄,有2个命令比较常用:ulimit和lsof
感兴趣的朋友可以参考我之前写的文章:
lsof:lsof 应用实例分享以及Oracle 数据文件删除恢复测试
ulimit:Linux ulimit和动态修改MySQL最大线程数限制
参考文章:
http://www.hackinglinuxexposed.com/articles/20020507.html
http://tech.xiachufang.com/?p=18
http://www.orczhou.com/index.php/2013/07/how-to-recover-data-from-mysql-innodb-data-file-ibd-file/
By 迦夜
2013-10-3
Good Luck