linux – 如何在不干扰服务器的情况下删除数百万个文件
发布时间:2020-12-13 18:21:14 所属栏目:Linux 来源:网络整理
导读:我想删除一个nginx缓存目录,我快速清除它: mv cache cache.bakmkdir cacheservice nginx restart 现在我有一个cache.bak文件夹,里面有200万个文件.我想删除它,而不会打扰服务器. 一个简单的rm -rf cache.bak会破坏服务器,即使最简单的HTTP响应在rm运行时需
我想删除一个nginx缓存目录,我快速清除它:
mv cache cache.bak mkdir cache service nginx restart 现在我有一个cache.bak文件夹,里面有200万个文件.我想删除它,而不会打扰服务器. 一个简单的rm -rf cache.bak会破坏服务器,即使最简单的HTTP响应在rm运行时需要16秒,所以我不能这样做. 我试过了ionice -c3 rm -rf cache.bak,但它没有帮助.服务器有一个硬盘,而不是SSD,可能在SSD上,这些可能不是问题. 我相信最好的解决方案是某种限制,比如nginx内置缓存管理器的方式. 你怎么解决这个问题?有没有可以做到这一点的工具? 在Ubuntu 16.04上的ext4 解决方法
制作一个像这样的bash脚本:
#!/bin/bash rm -- "$*" sleep 0.5 例如,使用名称deleter.sh保存它.运行chmod u x deleter.sh使其可执行. 此脚本删除作为参数传递给它的所有文件,然后休眠0.5秒. 然后,你可以运行 find cache.bak -print0 | xargs -0 -n 5 deleter.sh 此命令检索cache.bak中所有文件的列表,并一次将五个文件名传递给删除脚本. 因此,您可以调整一次删除的文件数,以及每次删除操作之间的延迟时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |