Eu experimentei um pouco mais e finalmente criei algo que mais ou menos se ajusta às minhas necessidades!
graphmem.sh
#!/bin/bash
cwd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$cwd"
for iuser in $(ps haxo user | sort -u); do
[[ $iuser == "root" ]] && continue
ps haxo user:64,pmem | awk -v tnow="'date -u +'%H:%M:%S''" -v user="$iuser" -v uid="$((id -u $iuser || echo $iuser) 2>/dev/null)" '$1 ~ user { sum += $2} END { if (sum) print tnow,sum,user,uid; else print tnow,0,user,uid; }'
done | sort -nk +2 >> mem.log
gnuplot "gnuplot.script"
cp mem-graph.png /path/to/www-destination/
echo "Done"
Observação: [[ $iuser == "root" ]] && continue
remove as informações do usuário "raiz".
gnuplot.script
reset
set key left top
set xtics nomirror
set ytics nomirror
set term png size 5000,1000
set output "mem-graph.png"
set ylabel "% Memory usage"
set xlabel " "
set auto xy
set xtics out offset 1,0 scale 25,0 rotate by 90
set yrange [0:100]
set xrange [0:*]
set style fill solid 1.0 border -1
set boxwidth 1
set multiplot
set title "Memory usage per user"
plot 'mem.log' using ($0):(($2 > 0.5) ? $2 : 1/0):4:xticlabels(stringcolumn(1)." ".stringcolumn(3)." ".stringcolumn(2)."%") with boxes lc variable notitle, \
'' using ($0):(($2 > 0.5) ? $2 : 1/0):(sprintf("%.1f%%",$2)) with labels offset 0,1 notitle
unset border
unset multiplot
Adicionar em / etc / crontab
@hourly root /path/to/graphmem.sh
Nota: Você precisa remover o mem.log manualmente todos os dias, mas pelo menos ele fornece um bom gráfico por 24 horas.