![如何通过命令获取 ubuntu 中每个用户的 CPU 使用率百分比](https://linux22.com/image/849111/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%8E%B7%E5%8F%96%20ubuntu%20%E4%B8%AD%E6%AF%8F%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E7%99%BE%E5%88%86%E6%AF%94.png)
我输入了这个命令来获取每个用户的内存使用情况:
ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i,arr[i]}'
我想知道是否有一个命令或方法可以获取每个用户的 CPU 使用率,或者换句话说,“CPU 利用率百分比”,就像上面的命令及其输出一样:
答案1
我可能错了,但不就是这样吗?
ps aux | awk 'NR>2{arr[$1]+=$3}END{for(i in arr) print i,arr[i]}'
响应以 CPU 使用率的百分比表示。
答案2
我不擅长编写脚本(例如,这个脚本肯定会让一些人哭泣和流泪...请随意编辑我的帖子以包括诸如对我不知道如何做的其他事情的反驳之类的内容。)
此脚本将显示 CPU 的使用率百分比,并从 计算得出top
。但它将使用临时文件来存储用户名。我认为这是计算 CPU 使用率最合适的方法,因为ps aux
并不完全等同于top
。
#! /bin/bash
## store the usernames in .aux.tmp temporary file
ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i}' > .aux.tmp
## print each user, then calcultate each CPU-usage with top
# this will only print the 9 firsts users. if you expect more than
# 9 users, add lines following the pattern (by replacing "9p"
# by "10p" for the 10st user, for example).
# print user 1 :
echo `sed -n '1p' .aux.tmp`
top -b -n 1 -u `sed -n '1p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 2 :
echo `sed -n '2p' .aux.tmp`
top -b -n 1 -u `sed -n '2p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 3 :
echo `sed -n '3p' .aux.tmp`
top -b -n 1 -u `sed -n '3p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 4 :
echo `sed -n '4p' .aux.tmp`
top -b -n 1 -u `sed -n '4p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 5 :
echo `sed -n '5p' .aux.tmp`
top -b -n 1 -u `sed -n '5p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 6 :
echo `sed -n '6p' .aux.tmp`
top -b -n 1 -u `sed -n '6p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 7 :
echo `sed -n '7p' .aux.tmp`
top -b -n 1 -u `sed -n '7p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 8 :
echo `sed -n '8p' .aux.tmp`
top -b -n 1 -u `sed -n '8p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
# print user 9 :
echo `sed -n '9p' .aux.tmp`
top -b -n 1 -u `sed -n '9p' .aux.tmp` | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""
此脚本将打印前 9 个用户及其使用的 CPU 百分比。如果您有超过 9 个用户,您可以添加行,只需遵循相同的模式(用Xp
数字替换,每行两次)
您可以将其复制粘贴到文件中,然后使用以下命令运行bash /path/to/file