日期:2014-05-16 浏览次数:20850 次
最近通过crontab 定时任务,制定FTP备份服务器附件到备份机。
由于某些原因,备份文件不正确,果然采用rm删除已经备份的部分文件(当时定时任务仍然在执行 )。
于是问题就来了, rm后的文件并没有释放磁盘空间。
寻求解决办法:
1、查询锁定的文件
这里就需要提到lsof命令了。
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
?
lsod |grep deleted
?
2、中止文件open
kill -9 2606 3367 .......
?
另外补充学习下当文件被意外删除后,如何找回。
?
假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
?
?
从上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在 /proc/1283/fd/2 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:
# head -n 10 /proc/1283/fd/2
?
如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/1283/fd/2 > /var/log/messages