只要平均系统负载较低,BASH 脚本就会复制目录的内容?

只要平均系统负载较低,BASH 脚本就会复制目录的内容?

由于一些我不会深入讨论的原因,我需要在平均系统负载较低的情况下复制目录。有人能帮我写一个 BASH 脚本来复制目录的内容,但在复制每个文件之前检查以确保平均系统负载低于 X,如果不低于,则等待 Y 秒并重试吗?

答案1

你能只运行 rsync 或任何你想结合使用的复制命令吗?好的设置处理器优先级和/或伊奥尼采设置 io 优先级。

答案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 提到的)并让操作系统进行调度(其设计就是为了做到这一点)。

相关内容