Recomendo veementemente que não faça isso . Como sugerido por @chrisamiller, configurar o ulimit limitará a RAM disponível com o processo.
Mas ainda se você estiver insistindo, siga este procedimento.
-
Salve o seguinte script como killif.sh
:
#!/bin/sh
if [ $# -ne 2 ];
then
echo "Invalid number of arguments"
exit 0
fi
while true;
do
SIZE=$(pmap |grep total|grep -o "[0-9]*")
SIZE=${SIZE%%K*}
SIZEMB=$((SIZE/1024))
echo "Process id = Size = $SIZEMB MB"
if [ $SIZEMB -gt ]; then
printf "SIZE has exceeded.\nKilling the process......"
kill -9 ""
echo "Killed the process"
exit 0
else
echo "SIZE has not yet exceeding"
fi
sleep 10
done
-
Agora torne-o executável.
chmod +x killif.sh
-
Agora, execute este script no terminal. Substitua PROCID
pelo ID do processo real e SIZE
pelo tamanho em MB.
./killif.sh PROCID SIZE
Por exemplo:
./killif.sh 132451 100
Se SIZE
for 100, o processo será eliminado se seu uso de RAM ultrapassar 100 MB.
Cuidado: Você sabe o que está tentando fazer. Processo de matança não é uma boa ideia. Se esse processo tiver qualquer comando de encerramento ou parada, edite o script e substitua o comando kill -9
pelo comando shutdown
.