有没有什么办法可以找到 Ubuntu 中的休眠进程?
我可以看到top
列出休眠进程的数量,但我希望列出它们的名称。
有任何命令可以做到这一点吗?
答案1
尝试这个:
ps o state,command axh | grep "^[SD]" | cut -b 3-
用于列出具有可中断和不可中断睡眠状态的进程的命令。
ps
仅输出所有进程的状态和命令(ax
)并h
删除标题行。grep
过滤除两种睡眠状态之外的进程cut
用于再次移除状态输出。- 如果不需要包含所有参数的全名,则可以选择替换
command
。ucmd
这可能是次优的脚本,但我找不到快速过滤ps
特定状态的方法。
答案2
您可以从顶部获取信息,它可以以批处理模式运行(-b
)。
top -bn1 | awk 'NR > 7 && $8 ~ /S|D/ { print $12 }'
-n1
top 仅运行一次然后退出。NR > 7
跳过标题。$8 ~ /S|D/
选择处于状态D
或的程序S
。
可能的状态包括top(1)
:
‘D’=不间断睡眠 'R' = 跑步 'S' = 睡觉 'T' = 追踪或停止 ‘Z’ = 僵尸
答案3
ps -e S
将向您展示睡眠过程。
答案4
使用awk
和ps
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