Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 每x(mili)秒暂停一次shell脚本,以减少即时CPU使用_Linux_Bash_Shell_Ubuntu_Terminal - Fatal编程技术网

Linux 每x(mili)秒暂停一次shell脚本,以减少即时CPU使用

Linux 每x(mili)秒暂停一次shell脚本,以减少即时CPU使用,linux,bash,shell,ubuntu,terminal,Linux,Bash,Shell,Ubuntu,Terminal,我有一个每小时备份MySQL数据库的shell脚本。这是一个基本的脚本: 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节省的空间对我来说至关重

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

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
部分,比方说每秒暂停一秒钟。这可以为其他进程腾出CPU时间

这可能吗

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

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

我希望执行
7z
时每X(某物)睡眠一秒钟。

使用
/etc/security/limits.conf
文件为用户/组配置限制如何?以及作为特定用户运行脚本/压缩?设置限制后,您可以使用进行测试。

您可以使用

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

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

这可能吗?
——不太可能。你提到你需要高压缩。你需要为此付出代价(在计算能力方面)。尝试使用
nice
$man prlimit玩多一点没有手动输入prlimit$prlimit prlimit:command notfound@RichardRodriguez哪个操作系统?Ubuntu Linux 13.10服务器,3.11.0-12-generic#19-Ubuntu@RichardRodriguez:看看Ubuntu,你可以试试
cpulimit
。使用
apt get Install cpulimit
安装。这似乎是个好主意。如何以与root不同的用户身份运行cron作业?