How would I get the number for CPU Utilization from running the top command on a specific user?
Advertisement
Answer
Pipe top
to awk
and add up the CPU utilization column:
top -b -n 1 -u username | awk 'NR>7 { sum += $9; } END { print sum; }'
That awk
command says “For rows (from top) greater than row 7, add up the number in field 9 $9
and store it in variable sum
. Once you have gone through all of the rows in the piped top
command, print out the value in variable sum
“.
If the -u
flag isn’t working on your system, you can just stick the username search with the NR>7
condition:
top -b -n 1 | awk 'NR>7 && $2=="root" { sum += $9 } END { print sum }'
If you wanted to print the percent used for each user listed in top, you could chuck that second condition and switch sum to be an array:
top -b -n 1 | awk 'NR>7 {users[$2]+=($9)} END {for(user in users){print user,users[user]}}'
One last thing. I believe that the percent cpu may need to be divided by the number of cores in your system. Like… I believe it might be possible to see a number greater than 100 pop up here.