![只要平均系统负载较低,BASH 脚本就会复制目录的内容?](https://linux22.com/image/1240018/%E5%8F%AA%E8%A6%81%E5%B9%B3%E5%9D%87%E7%B3%BB%E7%BB%9F%E8%B4%9F%E8%BD%BD%E8%BE%83%E4%BD%8E%EF%BC%8CBASH%20%E8%84%9A%E6%9C%AC%E5%B0%B1%E4%BC%9A%E5%A4%8D%E5%88%B6%E7%9B%AE%E5%BD%95%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%9F.png)
由于一些我不会深入讨论的原因,我需要在平均系统负载较低的情况下复制目录。有人能帮我写一个 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 提到的)并让操作系统进行调度(其设计就是为了做到这一点)。