LINUX.ORG.RU

Как убить процесс с условием

 


1

1

Привет. Возник вопроса, как отправить свою нужную команду для завершения процесса, если его нагрузка превысит условие, типо если ram > 200 то if (procram > 200) then и тд всего синтаксиса не знаю, так как не знаю как узнать нагрузка процесса по памяти подобным образом и сделать правильную команду) Прошу помочь.

Заверни процесс в cgroup'пу, поставь лимит по памяти, и ядро само прикончит тот процесс как только он вылезет за лимит.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

да мне нужно немного иначе это делать. я буду запускать проверки в определённое время своим скриптом, по шаблону команды, там очень разные лимиты у всех процессов и их очень много, лимиты постоянно меняются, по-этому нужна вот такая команда.

frealy121212
() автор топика

Ну и сравнение не так работает, нужны двойные скобки.

Я хотел тебе скриптик набросать, но с телефона чот не прёт сегодня. Пробуй сам пока, но кто-нибудь ещё подсобит наверняка.

WitcherGeralt ★★
()

Память двоякая тема. Процесс может вообще памяти не занимать, но подгружать шард на гигабайты.

anonymous
()
Ответ на: комментарий от anonymous

у top есть ясное понятие сколько оперативной памяти использует процесс в %, именно этот параметр и интересует.

честно говоря так и не понял. как узнать потребление памяти процессом - я знаю. как убить - знаю

а вот как сделать условие для проверки, нет, собственно вот)

rss=$( echo $( ps -o rss -p $pid | tail -n 1 ) )

что это означает? не понятно.

frealy121212
() автор топика
Ответ на: комментарий от frealy121212

Ну вот пускай твой скрипт то же самое делает через cgroups — меняет лимиты и двигает процессы туда-сюда.

post-factum ★★★★★
()
Ответ на: комментарий от frealy121212

что это означает? не понятно

В таком случае RTFM. Если ты не способен понять ответы на задаваемые тобой вопросы, то всё безнадёжно, тебе никто не поможет.

Это значение потребляемой оперативы для процесса с указанным PID, присвоенное переменной $rss, чтобы в дальнейшем его можно было вставить в условие.

WitcherGeralt ★★
()
Ответ на: комментарий от frealy121212

я буду запускать проверки в определённое время своим скриптом, по шаблону команды, там очень разные лимиты у всех процессов и их очень много, лимиты постоянно меняются, по-этому нужна вот такая команда.

В скрипте пишешь код, проверяющий соответствие каждого процесса условиям, которые, например, ты укажешь в конфигруационном файле. Если процесс выходит за рамки, прибиваешь его.

честно говоря так и не понял. как узнать потребление памяти процессом - я знаю. как убить - знаю. а вот как сделать условие для проверки, нет

Использовать более подходящий язык программирования для написания логики

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.