Как я могу автоматически завершить определенный процесс, когда он достигает 400 МБ ОЗУ? И как я могу изменить его после того, как я это сделаю? Есть ли какая-либо программа или сценарий или что-нибудь?!
Вот пример сценария:
#!/bin/bash
# Here put the name of your process
ProcName="process_name"
# Here put the desired memory limit in KBytes
MemLimit=400000
ProcID=$(pidof "$ProcName")
if [ -z "$ProcID" ] ; then echo "Process not found" ; exit ; fi
while true
do
MemCurrent=$(grep VmSize /proc/"$ProcID"/status | cut -f 2 | tr -d ' kB')
if [ $MemCurrent -gt $MemLimit ]
then
kill -9 "$ProcID"
exit
fi
sleep 5
done
Установите желаемое имя процесса и ограничение памяти в переменных ProcName
и MemLimit
. Сохраните этот скрипт где-нибудь, например как ~/killer.sh
. Сделайте его исполняемым: chmod +x killer.sh
. Затем запустите его: ./killer.sh
.
Что вы подразумеваете под « изменить его обратно »?
N.B. На самом деле VmSize
не даст вам точного использования памяти. Расчет реального использования памяти процесса является сложной задачей. Вы можете получить некоторое представление здесь: https://stackoverflow.com/questions/131303 . Но я думаю, что этого сценария будет достаточно в вашем случае.