сценарий оболочки для автоматического уничтожения процессов, соответствующих определенным критериям

при запуске top он показывает, что несколько процессов получили почти 100% -ное использование процессора командой «perl»,

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21287 simon 15 0 4141 231 5891 S 90.3 0.0 14:27.50 perl 22545 albert 15 0 12744 1172 8321 S 99.0 0.0 20:00.58 perl ... ... 

lsof -p <pid> чтобы оценить, является ли это вредоносный процесс (обычно где-то вниз по линии трубопровода он пытается подключиться к внешнему ip-адресу с использованием локального порта> 50000)

kill -9 <pid> чтобы убить тот вредоносный процесс индивидуально

затем повторите описанное выше

в идеале я хотел бы автоматически убивать процессы:

  • пользователи, показанные выше
  • проработали более 15 минут
  • более 90% использования процессора.
  • с исходящим подключением tcp (если возможно)

есть ли у кого-нибудь удобный скрипт? благодаря!

One Solution collect form web for “сценарий оболочки для автоматического уничтожения процессов, соответствующих определенным критериям”

На самом деле у меня нет сценария, но убийство этих вредоносных процессов не поможет вам решить проблему, которая у вас есть в первую очередь … Я думаю, вы веб-хостинга, и это шахтеры, которые работают на вашем VPS?

То, что вы можете сделать, – это не убивать их, чтобы «убить их до смерти», используя группы.

У вас там будет учет процессора и сети, а также инструмент cgclassify . Вы можете создавать гибкие иерархии. Здесь есть хорошая документация для CentOS / RHEL.

Я не эксперт в деталях, но я думаю, что это возможно следующим образом: вы создаете группы для CPU / Memory / Network и классифицируете процессы в соответствии с используемыми долями с помощью cgclassify или демон mentend. Это означает, что демоны заботятся о том, чтобы контролировать использование ressource, и вы можете перемещать, например, процессы, которые используют сеть и определенное количество общих ресурсов процессора, в группу, которая сильно ограничивает доступ к ЦП и сети или прямо убивает процесс (например, из-за низкой памяти) ,

Вот представление с некоторыми деталями .

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

С помощью групп вы можете классифицировать определенные безопасные двоичные файлы (например, PHP, Apache) и ограничивать все остальные процессы … поэтому использование CPU / Network не повлияет на сервер, и это медленное время, так что пользователям нечего запускать эти задачи. также возможно сформировать доли процессора таким образом, что процесс будет медленнее, чем больше процессор, который он использует. То же самое и для пропускной способности сети. Вы можете ограничить, например, все процессы для каждого пользователя, чтобы использовать только 1 Мбит для исходящих сетевых подключений или даже меньше.

Вы также можете просто использовать учетные данные из групп, чтобы убить процессы.

Выполнение этого «на лету» выглядит как другая проблема, но если проблема постоянна, ulatencyd использование и изменение ulatencyd или ulatencyd инструментов в соответствии с вашими потребностями. С хорошими правилами это должно заботиться о проблемных процессах быстрее, чем 15 минут и с некоторым сопротивлением.

  • В Unix говорят, в чем разница между скриптом оболочки и исполняемым файлом?
  • Как запросить ввод от пользователя из переменной или массива bash?
  • Чтение строк из файла в переменную
  • Cygwin - Shell Scripting (eval и echo)
  • Почему этот скрипт рыбы не запускается из пусковой установки?
  • Использование шаблона в пути к каталогу
  • оптимизировать команду с помощью or или pipe для анализа вывода ifconfig
  • Извлечение из журналов
  • Как анализировать параметры в функции оболочки для навигации по нескольким проектам
  • Баш обнаруживает искусство ascii
  • Использовать функцию bash в конвейерной команде
  • Linux и Unix - лучшая ОС в мире.