Estou ligando cpulimit
de cron
:
00 16 * * * /usr/bin/cpulimit --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh
Quando o trabalho é iniciado, a CPU dispara e alerta como sempre, sem que nenhum limite real de identificação tenha ocorrido. O próprio trabalho itera em um diretório de muitos subdiretórios e executa rsync
's a cada vez, o que acredito estar gerando rsync
processos filhos (executar top terá um pid disponível para o chamado rsync, que após alguns minutos terá um pid diferente para rsync
).
Não tenho certeza de como utilizar corretamente cpulimit
para limitar efetivamente o uso que esse processo consome.
Pode ser importante ter em mente que esta é uma VM com 2G de RAM e 1vCPU.
Por padrão
cpulimit
, não limita os processos filho, portanto,rsync
não está sendo limitado. Se você estiver executando uma versão recente o suficientecpulimit
, poderá usar a opção--include-children
(ou-i
). (Veja também esta resposta .)Isso mudaria sua entrada cron para:
00 16 * * * /usr/bin/cpulimit --include-children --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh
EDIT: Como o OP respondeu (eles mesmos), funcionaria para
cpulimit
osrsync
comandos dentro do script, mas isso não garantiria que seu script estivesse sendo bom enquanto estiver fazendo outras funções. Por exemplo, se o script tiver que processar um diretório enorme, ele poderá atolar o sistema e causar um pico de CPU e alerta.