linux删除文件后未释放空间
目录
[TOC]
问题
Linux硬盘用量满了以后,基本不能用了,删了大文件以后,占用的容量还是没有释放,又不想重启。
解决方法
1.通过lsof | grep deleted
查看 系统已经打开的 状态是deleted
的 文件的 进程的pid
lsof | grep deleted
[root@server ~]# lsof | grep deleted
qbittorre 3214 root 34u REG 253,1 6195323079 786637 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E05.Eastwatch.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 37u REG 253,1 5277338330 786743 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E04.The.Spoils.of.War.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 41u REG 253,1 7054013943 786738 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E02.Stormborn.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 49u REG 253,1 9856046323 786739 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E07.The Dragon.and.the.Wolf.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 51u REG 253,1 6529537023 786740 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E01.Dragonstone.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 52u REG 253,1 7724087327 786741 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E03.The.Queen's.Justice.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
qbittorre 3214 root 53u REG 253,1 8323443030 786742 /home/qbittorrent/temp_downloads/Game.of.Thrones.S07.PROPER.1080p.BluRay.DD+7.1.x264-DON/Game.of.Thrones.S07E06.Beyond.the.Wall.1080p.BluRay.DD+7.1.x264-DON.mkv (deleted)
.
.
.
.
2.kill
对应的pid
即可
kill 3214
[root@server ~]# kill 3214
[root@server ~]#
技巧
pid
太多的话暂时没有找到自动删除的方法,只能通过正则处理lsof | grep deleted
输出的文本
正则搜索(^[\w(].*?)(\d.*?) .*$
并将其替换为kill $2
结果:

再通过将^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
or^(.*)(\r?\n\1)+$
替换成$1
,以去除重复行
结果:

最后粘贴进终端回车即可
[root@server ~]# kill 641
[root@server ~]# kill 747
-bash: kill: (747) - 没有那个进程
[root@server ~]# kill 750
[root@server ~]# kill 751
[root@server ~]# kill 755
-bash: kill: (755) - 没有那个进程
[root@server ~]# kill 760
-bash: kill: (760) - 没有那个进程
[root@server ~]# kill 761
[root@server ~]# kill 773
[root@server ~]# kill 784
-bash: kill: (784) - 没有那个进程
[root@server ~]# kill 785
[root@server ~]# kill 806
[root@server ~]# kill 1009
[root@server ~]# kill 1038
[root@server ~]# kill 1106
[root@server ~]# kill 1209
-bash: kill: (1209) - 没有那个进程
[root@server ~]# kill 3464
[root@server ~]# kill 56171
[root@server ~]# kill 60310
[root@server ~]# kill 802573
[root@server ~]#