由于一些我不会深入讨论的原因,我需要在平均系统负载较低的情况下复制目录。有人能帮我写一个 BASH 脚本来复制目录的内容,但在复制每个文件之前检查以确保平均系统负载低于 X,如果不低于,则等待 Y 秒并重试吗?
答案1
答案2
有一个rsync
限制 I/O 带宽的选项:
--bwlimit=KBPS 限制 I/O 带宽;每秒千字节
答案3
只是为了好玩(是的,我知道如果它进入睡眠模式,它不会尝试再次复制文件,我会把它留给你自己娱乐;走过“$@”想到了+转移):
/bin/bash #!/bin/bash 对于我在文件1文件2文件3等中 做 LOAD=$(正常运行时间 | awk'{sub(/,.*/,“",$9);打印$9*100.0}') 如果[$LOAD -lt 85] 然后 echo“将$i复制到任意位置” 别的 echo“由于负载为$LOAD,因此处于睡眠状态” 睡 5 菲 完毕
通过使用平均负载最后一分钟,只有当系统有 85% 空闲时,它才会执行一些操作。
无论如何,我只会使用带有限制的 rsync(正如 dennis 提到的)并为 rsync 进程设置一个较高的 nice 值(等于低优先级)(正如 zoredache 提到的)并让操作系统进行调度(其设计就是为了做到这一点)。