释放被程序占用的磁盘空间

*问题

我们在生产中有时候会遇到磁盘空间满了,造成操作系统崩溃情况,这因为操作系统后台有很多程序在不停的工作,比如说日志就不停的在写。我们的通常做法是,临时清空一些没有用的文件数据来减轻系统的压力,如果这个时候又有一些程序正在访问占用这个文件,我们该如何处理呢?

试验模拟

第一次实验:无程序占用磁盘空间的情况下清理磁盘空间

# df -h

df -h命令可以查看实验环境的磁盘空间情况

这里写图片描述

如上图用挂载到/boot文件夹下的磁盘a的分区1来做实验,磁盘总空间大小为969M,已经使用35M,可用885M,使用率为4%,现在把磁盘空间使用率提高至80%。

使用dd命令从设备文件/dev下写0到/boot/文件夹下的新建的test文件里,大小为700M。

#dd if=/dev/zero of=/boot/test bs=1M count=700


这里写图片描述

从图上可以看出,/boot分区的使用率升至80%。

现在使用rm命令删除test文件

# rm -rf /boot/test


从图上可以看出,磁盘空间的使用率降低到4%,说明用rm命令成功的删除了test文件,并释放了磁盘空间。



第二次实验:有应用程序占用磁盘空间的情况下释放磁盘空间

重复上面的命令,使/boot分区的使用率提高至80%,然后在同一操作系统上另外开一终端,使用vim命令编辑test文件,不要退出。

这里写图片描述

注意:进入编辑模式不要退出

这里写图片描述

切换终端终端,执行命令rm删除test文件

# rm -rf /boot/test
#df -h


这里写图片描述

从显示的结果看出,执行rm命令后,空间使用率并没降下来,还是80%,接着我们可以执行 ls 命令查看 test文件 是否存在。

这里写图片描述

从图上可以看到,boot目录下没有test文件,说明执行 rm 命令只是删除了test文件,但是没有释放磁盘空间。删除失败,说明在有程序占用磁盘空间的情况,只是执行 rm 命令可以删除文件夹,但是不能够释放磁盘空间。


第三次实验:释放被程序占用的磁盘空间

退出实验二中的vim编辑,执行 rm 命令删除test文件,重复上面的步骤,把/boot分区的磁盘空间使用率升至80%,同样另开一个终端使用vim命令编辑/boot文件夹下的test文件不要退出。注意:不要执行rm命令

分析:实验二发现有程序占用了test文件,从而出现不能用 rm 删除文件释放磁盘空间的情况,同时在真实环境中,很可能有多个程序占用要清里的磁盘空间,如果采用杀死进程的方法管理程序,虽然可行,但是效率较低,不能达到快速释放磁盘空间的目的。

这里可以使用lsof命令查看谁正在占用磁盘空间。

# lsof /boot/test


这里写图片描述

从图上可以清楚的看出,vim正在占用test文件。

分析:我们既不能用直接删除test文件方法来释放磁盘空间,关闭程序的方法也达不到我们需求,那么我们该怎么办呢?
其实我们可以用覆盖test文件内容的方法来释放磁盘空间。

继续上面的操作,我们在/boot分区磁盘空间使用率在80%,并且不退出vim编辑的情况下,执行 > /boot/test 命令
> /boot/test 命令的意思是大于括号前面的内容覆盖后面的文件内容,大于括号前面没有内容,就为空,覆盖后,文件即为空。

# > /boot/test


这里写图片描述

从图上看出,/boot分区下的磁盘空间使用率在不退出vim编辑模式的状态下很快又变回了4%,说明释放磁盘空间成功,实验三成功。

在/boot文件夹下执行 ll 命令

这里写图片描述

从图上可以看到test文件还在,不过文件内容大小已经为0,说明覆盖成功。再执行 rm 命令删除test文件即可。

这里写图片描述

总结:实验一中,在没有程序占用文件或者磁盘空间的情况下,直接 执行rm -rf 命令删除文件,即可释放磁盘空间。实验二中,有程序占用磁盘空间,用 rm -rf 可以删除文件,但是不能释放磁盘空间,除非关闭程序。实验三中,在程序占用磁盘空间的情况下,用覆盖的方法可以释放磁盘空间,达到强行释放被程序占用磁盘空间的目的!

最后,感谢认真用心的自己~~微笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值