1

Привет!
Вопрос следующего характера: у меня задание написать скрипт который мониторит процессы и если процесс использует больше памяти чем я укажу отправлять сигнал TERM
Я написал скрипт такого плана:

#!/bin/bash
max_mem=$(ps -eo user,pid,pcpu,pmem --no-headers | awk '{ if ( $4 > 0.2) print $2}')
   
   echo $max_mem
  kill -9 $max_mem

Но преподователь сказал что он не будет работать или работает не корректно
Можете что то посоветовать или показать в чем я не прав?)
Спасибо

2

nikolya пишет:

max_mem=$(ps -eo user,pid,pcpu,pmem --no-headers | awk '{ if ( $4 > 0.2) print $2}')

ну вам тут только pmem и pid нужен, а вы зачем-то ещё user/pcpu вывели.

Кроме того, если условие не выполнено, в переменной будет "пусто". Надо проверить этот особый случай типа

if [ "$max_mem" ]; then
  kill…
fi

и наконец, -9 это у меня SIGKILL, а SIGTERM -15. Здесь валялась моя маленькая статья про сигналы.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)