Как я могу автоматически завершить конкретный процесс?

Как я могу автоматически завершить определенный процесс, когда он достигает 400 МБ ОЗУ? И как я могу изменить его после того, как я это сделаю? Есть ли какая-либо программа или сценарий или что-нибудь?!

3
задан 14 October 2013 в 18:52

1 ответ

Вот пример сценария:

#!/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 . Но я думаю, что этого сценария будет достаточно в вашем случае.

0
ответ дан 14 October 2013 в 18:52

Другие вопросы по тегам:

Похожие вопросы: