Как завершить cpulimit для процесса
Я использую очень удобный инструмент CPULimit, чтобы ограничить использование ЦП при импорте, запускаемом в cron моего сервера Ubuntu.
Успешное ограничение процесса не является проблемой, я также могу вернуть значение без ограничений (100%), когда процесс завершается, однако, когда процесс импорта завершается, у меня остаются запущенные процессы CPULimit. Затем список процессов CPULimit добавляется при запуске следующего задания cron.
Я могу запустить команду типаpkill -f cpulimit
чтобы удалить процессы, однако я предполагаю, что есть команда, которая прекратит ограничение, она просто не задокументирована.
Чтобы попытаться помочь вам понять, вот небольшой поток:
- Cron запускает импорт.
- Скрипт импорта устанавливает лимит процессора и указывает на
> /dev/null
:sudo -u {USER} cpulimit --pid {PID} --limit {LIMIT} > /dev/null &
. - Процесс CPULimit добавляется в список процессов при выполнении команды grep.
- Импорт завершен.
- Затем сценарий импорта возвращает ограничение на 100%.
- Процесс CPULimit добавляется в список процессов, разрешающих 100% загрузку ЦП.
~ Я думал, что это завершит предыдущий процесс, но он поддерживает работу процессов {LIMIT} и процесса limit:100.
- Импортер снова бежит.
- Еще два процесса CPULimit добавлены в список в
ps aux | grep cpulimit
.
Я могу использовать shell_exec(pkill -f cpulimit), который убивает все процессы CPULimit, кроме последних.
Однако, скажем, я хочу ограничить другие процессы, а тайминги не работают идеально, ограничение на другие ограниченные процессы также будет убито.
Есть ли способ инициировать cronjob, не замораживая импортер при применении CPULimit (я обошел эту проблему, отправив его в > /dev/null), затем, когда импортер закончится, удалить/удалить/убить ограничитель в этом Например, как они в настоящее время просто складываются?
** Я не прошу убивать процесс импортера, если достигнут предел, я хочу убить CPULimit из процессов и снять ограничение на процесс, который он ограничивает **