bash скрипт для мониторинга использования памяти процессом и его уничтожения - PullRequest
0 голосов
/ 15 марта 2020

Я ищу сценарий bash, который позволяет мне запускать процесс в фоновом режиме, например, отслеживать потребление памяти каждые 10 минут, а если оно превышает определенное значение, убить его.

РЕДАКТИРОВАТЬ Я могу правильно выбрать правильный pid процесса, который хотел бы убить, но команда sudo kill "$ FIRST", похоже, не работает, и после выхода из сценария, набрав htop на консоли, процесс все еще жив. Также, если я наберу sudo kill #pid непосредственно в консоли, эта команда сработает и уничтожит процесс

#!/bin/bash
sudo python3 main.py &
sleep 5
pidlist=$(pidof python3 main.py)
echo "$pidlist"
read FIRST __ <<< "$pidlist"
echo "$FIRST"
mem=$(ps -p "$FIRST" -o %mem)
echo "$mem"
set -- $mem
memory="$2"
while true;
do
  sleep 2
  echo "$memory"
  if (( $(echo "${memory} > 20.0" | bc) )); then
    echo "killing process"
    sudo kill "$FIRST"
    break
  fi
  sleep 2
done

с помощью set -x, консоль также напечатает часть, относящуюся к началу процесса, но в конце скрипта эта печатная часть больше не отображается на консоли

+ mem='%MEM
 25.5'
+ echo '%MEM
 25.5'
%MEM
 25.5
+ set -- %MEM 25.5
+ memory=25.5
+ true
+ sleep 2
+ echo 25.5
25.5
++ bc
++ echo '25.5 > 20.0'
+ ((  1  ))
+ echo 'killing process'
killing process
+ sudo kill 2247
+ break
...