如何在 Ubuntu 中查找睡眠进程?

如何在 Ubuntu 中查找睡眠进程?

有没有什么办法可以找到 Ubuntu 中的休眠进程?

我可以看到top列出休眠进程的数量,但我希望列出它们的名称。

有任何命令可以做到这一点吗?

答案1

尝试这个:

ps o state,command axh | grep "^[SD]" | cut -b 3-

用于列出具有可中断和不可中断睡眠状态的进程的命令。

  • ps仅输出所有进程的状态和命令(ax)并h删除标题行。
  • grep过滤除两种睡眠状态之外的进程
  • cut用于再次移除状态输出。
  • 如果不需要包含所有参数的全名,则可以选择替换commanducmd

这可能是次优的脚本,但我找不到快速过滤ps特定状态的方法。

答案2

您可以从顶部获取信息,它可以以批处理模式运行(-b)。

top -bn1 | awk 'NR > 7 && $8 ~ /S|D/ { print $12 }'
  • -n1top 仅运行一次然后退出。
  • NR > 7跳过标题。
  • $8 ~ /S|D/选择处于状态D或的程序S

可能的状态包括top(1)

      ‘D’=不间断睡眠
      'R' = 跑步
      'S' = 睡觉
      'T' = 追踪或停止
      ‘Z’ = 僵尸

答案3

ps -e S 

将向您展示睡眠过程。

答案4

使用awkps

ps o pid,state,command | \
    awk ' {if ($2 == "T") {printf "%s\t%s\t%s\n","Sleeping",$1,$3};}'

例子

mc从终端启动,打开一个新终端并启动以下命令

kill -STOP $(pgrep mc)
ps o pid,state,command | \
    awk ' {if ($2 == "T") {printf "%s\t%s\t%s\n","Sleeping",$1,$3};}'

输出为

Sleeping    21668   mc

相关内容