CPU使用率の高いユーザを特定する

#!/bin/sh
#highuser.sh

pslists=$(mktemp /tmp/pslist.XXXXXXX)
useridlists=$(mktemp /tmp/userlist.XXXXXXXX)
results=$(mktemp /tmp/results.XXXXXXXX)

ps -eo uid,pcpu --sort uid --no-headers  \
 | sed -e 's/^ \{1,\}//' -e 's/ \{1,\}/ /' > $pslists
cut -d" " -f1 $pslists | uniq > $useridlists

IFS_DEF=$IFS
IFS="
"
for userid in $(cat $useridlists); do
    usageratesum="0"
    for cpurate in $(cat $pslists | grep "^$userid "); do
        usagerate=$(echo $cpurate | cut -d" " -f2)
        usageratesum=$(echo "scale=1; $usagerate + $usageratesum" | bc)
    done
    username=$(grep ":$userid:" /etc/passwd | cut -d":" -f1)
    echo $username $usageratesum >> $results
done
IFS=$IFS_DEF

cat $results | sort -k2nr | awk '{ printf "%-20s %4.1f%\n", $1, $2 }'
trap 'rm -f $pslists $userlists $results' EXIT