Я ищу сценарий 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