Há quase certamente uma maneira melhor de fazer isso, provavelmente através de limits.conf
, mas eu não sei, então aqui está um hack sujo.
Este comando irá matar todos os processos pertencentes ao usuário terdon
que estão usando mais de 3G de RAM:
ps -u terdon -o vsize= -o pid= |
while read mem pid; do [ $mem -gt 3145728 ] && kill $pid;
done
O comando ps -u terdon -o vsize= -o pid=
imprimirá o PID e a memória usada (unidades de 1024 bytes) em cada um dos processos pertencentes a terdon
. Obviamente, você deve adaptar isso para usar o nome de usuário do seu amigo. A saída do comando ps
é então passada por um loop while que lê o uso de memória e pid e, em seguida, mata o PID se estiver usando mais de 3145728K de memória.
Se você agora adicionar isso como um crontab executado pelo root, ele será executado a cada minuto e eliminará os processos que estão usando mais RAM do que você deseja permitir. Então, adicione esta linha a /etc/crontab
:
* * * * * root ps -u terdon -o vsize= -o pid= | while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; done
Como eu disse, isso é deselegante e apenas um hack feio, mas pode ser o suficiente.