删除大量文件

Jon*_*jon 6 command-line shell io find

我不小心创建了 800 万个文件,每次我试图删除它们时,服务器几乎都死了,因为 rm 进程吃掉了所有磁盘 IO(服务器是远程的,没有控制台)。

应该像这样的工作,即调用 ionice 吗?

sudo find /var/lib/php5/ -type f -exec ionice -c3 rm -f {} \;
Run Code Online (Sandbox Code Playgroud)

xen*_*ide 9

我会这样做...

sudo ionice -c3 find /var/lib/php5/ -type f -exec  rm -f '{}' +
Run Code Online (Sandbox Code Playgroud)

+更xargs的喜欢(我认为),从而在非常大量的文件更有效。将 ionice 放在整个命令上应该使每个子命令也被离子化,以及搜索本身。你试过这个吗?

你也可以让它变得非常好, nice -n 19 ionice -c 3 programname虽然它不应该是必要的。

或者从@alex那里得到提示,你可以

ionice -c3 find /var/lib/php5/ -type f -delete
Run Code Online (Sandbox Code Playgroud)

  • 甚至更好地使用 `find` 的 `-delete` 而不是产生 `rm`s。 (6认同)