运行队列中的进程

运行队列中的进程

如何显示当前运行队列中的进程和线程的当前列表?

也就是说,如果我的服务器的平均负载为 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 }')"

相关内容