我有一个想要删除的目录列表。但是当我一次删除所有目录时,负载会突然增加。有人有脚本示例吗?该脚本会等到负载低于某个水平后再继续删除(循环交互)
答案1
更好的是,使用ionice
。
ionice -c3 ./deletion-script
这将导致您的删除命令仅在磁盘 IO 空闲时运行,因此其优先级最低。网络城市有一篇关于所有变体及其使用方法的精彩小文章。
答案2
ionice
可能是最好/最简单的解决方案,但它实际上只是延缓了不可避免的事情,并且可能只是意味着延长中等负载而不是短时间的高负载。
这里有一篇很好的文章http://www.depesz.com/2010/04/04/how-to-remove-backups/采用系统控制的方法。
更改 io 调度程序、删除日志、atime 和 diratime 也是导致此问题的原因。还有一个不同的删除二进制文件fastrm
,您可以在此处找到手册http://linux.die.net/man/1/fastrm
不要在家尝试
前段时间,我们测试了删除 TB 级数据的更快方法。最后,事实证明,启动rm
或mv
使用 中断该过程实际上更快^c
。然后使用 强制重新启动机器fsck
,这将清理 inode 并释放文件系统上的后续空间。
它的效果出奇地好,而且比传统的删除方法快得多——但我永远不会在生产系统上这样做。永远。