gpt4 book ai didi

linux - 每隔 x(毫秒)暂停一个 shell 脚本以减少立即的 CPU 使用率

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:29 27 4
gpt4 key购买 nike

我有一个 shell 脚本,它每小时备份一次我的 MySQL 数据库。这是一个基本脚本:

mysqldump --user=$USER --password=$PASS $DB > /$PATH/$DATE.sql &&
7z a -t7z -mx=9 /$PATH/$DATE.sql.7z /$PATH/$DATE.sql &&
rm /$PATH/$DATE.sql

我使用的是 7z 压缩,因为:

  • 不需要保留文件权限和所有者/组
  • 与 gzip 相比,7z 节省的空间对我来说至关重要

令我困扰的是,7z 部分(第 2 行)大约需要 30 秒,并且在此期间使用了相当多的 CPU。从这开始,我的服务器负载图表每小时都​​有 50% 的峰值,我想摆脱这些峰值。

我已经用 nice 执行了这个脚本:

0 * * * * /usr/bin/nice -n 19 /path/to/backup.sh > /dev/null

此时我能想到的唯一解决方案是以某种方式暂停 7z 部分的执行,假设每秒暂停 1 秒。这可以为其他进程释放 CPU 时间。

这可能吗?

我在我的 .php 脚本中做了类似的事情,尽管停顿在循环中,例如:

while($d=mysqli_fetch_assoc($q)){
usleep(250000);
// process $d
}

我希望 7z 执行每隔 X(某事)休眠 1 秒。

最佳答案

你可以使用

prlimit --cpu=10 7z a -t7z -mx=9 /$PATH/$DATE.sql.7z /$PATH/$DATE.sql

这会将 cpu 使用率限制在 10%

关于linux - 每隔 x(毫秒)暂停一个 shell 脚本以减少立即的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21856912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com