我打电话cpulimit
来自cron
:
00 16 * * * /usr/bin/cpulimit --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh
当工作开始时,CPU 会像往常一样出现峰值并发出警报,而没有发生实际可识别的限制。该作业本身迭代许多子目录的目录并rsync
每次执行 's,我相信这会产生rsync
子进程(运行 top 将有一个可用于被调用的 rsync 的 pid,几分钟后将有一个不同的 pid rsync
)。
我不确定如何正确利用cpulimit
来有效限制此过程消耗的使用量。
记住这是一个具有 2G RAM 和 1vCPU 的 VM 可能很重要。
默认情况下
cpulimit
不限制子进程,因此rsync
根本不受限制。如果您正在运行足够新的版本,cpulimit
您应该能够使用--include-children
(or-i
) 选项。(另请参阅此答案。)这会将您的 cron 条目更改为:
00 16 * * * /usr/bin/cpulimit --include-children --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh
编辑:正如 OP(他们自己)回答的那样,它适用于脚本
cpulimit
中的rsync
命令,但这并不能确保您的脚本在执行其他功能时很好。例如,如果脚本必须处理一个庞大的目录,它可能会阻塞系统并导致 CPU 峰值和警报。