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.