如何显示当前运行队列中的进程和线程的当前列表?
也就是说,如果我的服务器的平均负载为 32.1,那么在过去几分钟内的任何给定时间点,平均有大约 32 个进程或线程准备运行。我想知道它们是什么。
类似的东西ps axHr
应该可以解决问题,但是在平均负载在 80 范围内的服务器上,它只显示 3 或 4 个项目。
我想到最好的办法是ps axH | grep -v " S"
,但这似乎笨拙且脆弱,甚至不完全正确。
答案1
ps -A -o pid,state,command | awk '{ if ($2 == "R") print }'
1605 R /usr/bin/skype
30655 R ps -A -o pid,state,command
或者使用 htop 并按“S”排序(F6)
或解决高负载值问题:
while [ 1 ] ; do ps -A -o pid,state,command | \
awk '{ if ($2 != "S") print }' | \
grep -v "ps -A -o pid,state,command" ; sleep 3 ; done
答案2
您可以在命令行中添加监视:
watch -n 1 "(ps aux | awk '\$8 ~ /D/ || \$8 ~ /R/ { print \$0 }')"