Como posso terminar automaticamente um processo específico?

3

Como posso terminar automaticamente um processo específico quando ele atinge 400 MB de RAM? E como eu mudo de volta depois de fazer isso? Existe algum programa ou script ou alguma coisa?!

    
por STAB 14.10.2013 / 16:40

1 resposta

1

Aqui vai o script de exemplo:

#!/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

Defina o nome do processo e o limite de memória desejados nas variáveis ProcName e MemLimit . Salve esse script em algum lugar, por exemplo, como ~/killer.sh . Torne-o executável: chmod +x killer.sh . Em seguida, execute-o: ./killer.sh .

O que você quer dizer com " mudar de volta "?

N.B. Na verdade, VmSize não fornecerá o uso exato da memória. O cálculo do uso real da memória do processo é uma tarefa complexa. Você pode obter algumas informações aqui: link . Mas acho que esse script será suficiente no seu caso.

    
por whtyger 14.10.2013 / 20:34

Tags