O abaixo irá matar o processo usando a maior parte da memória na caixa. É isso que você estava procurando, ou tem que ser o processo do usuário que está usando a maior parte da memória (o que pode não ser o maior infrator e a razão da falta de memória)?
#!/bin/bash
free='awk '/^Mem/ {print $3}' <(free -m)'
psout='ps axo pid,args,pmem,rss,vsz --sort -pmem,-rss,-vsz | head -2'
pid='echo $psout | cut -d " " -f 6'
if (( $free < 1 )); then
kill -9 $pid
fi;
Editar: vejo seu raciocínio agora, tentarei modificar o código acima.
Edit 2: Já que eu não tenho que completar este projeto hoje, deixe-me colocar você no caminho certo. Você pode fazer o download do smem (script python) na URL abaixo: link
A opção Executar como root com -u fornecerá a quantidade total de memória usada por cada usuário. Agarre isso em uma matriz, ordene por mem usado, então apenas adicione a -u ao comando ps acima para matar o pior agressor daquele usuário.