Bob*_* P. 136
ps
当您可以使用top
命令轻松完成时,为什么要使用?
如果你必须使用ps
,试试这个:
ps aux | sort -nrk 3,3 | head -n 5
Run Code Online (Sandbox Code Playgroud)
如果你想要一些真正“顶级”且不断更新的东西,请使用 watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
Run Code Online (Sandbox Code Playgroud)
Fac*_*tor 118
正确答案是:
ps --sort=-pcpu | head -n 6
Run Code Online (Sandbox Code Playgroud)
因此,您可以在不干扰排序的情况下指定列。
前任:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Run Code Online (Sandbox Code Playgroud)
MAC OS X 的注意事项:在 Mac OS X 中,ps
不识别--sort
,但提供-r
按当前 CPU 使用情况排序。因此,对于 Mac OS X,您可以使用:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
Run Code Online (Sandbox Code Playgroud)
Rya*_*ger 30
根据您的需要,您可能会发现这更具可读性:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
Run Code Online (Sandbox Code Playgroud)
示例输出:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
Run Code Online (Sandbox Code Playgroud)
(字段为 %CPU、PID、USER、COMMAND)
Cal*_*leb 27
我不认为这ps
是你要找的。你看过输出top
吗?
如果您有 GNU-Top,请尝试使用它的批处理模式吐出按 cpu 使用情况排序的进程列表,并使用 head/tail 获取前 5 行(前 8 行是标题):
top -b -n 1 | head -n 12 | tail -n 5
Run Code Online (Sandbox Code Playgroud)
BSD 顶部的行为似乎有所不同,并且没有非交互模式,因此请使用其他ps
基于解决方案之一。
为了给其他有价值的答案添加一点,我更喜欢:
ps auxk-c | head -6
Run Code Online (Sandbox Code Playgroud)
它还打印标题,这很好。
这里k
与排序相同--sort
并c
指定 CPU 使用率(别名%cpu
)字段,而-
用于反向排序。
您可以添加更多由 分隔的说明符,
,其他可能的说明符是 : %mem
, args
, bsdstart
, pid
, gid
, uid
... 您可以在手册页的STANDARD FORMAT SPECIFIERS部分找到完整列表 。例如:
ps auxk -gid,-%mem | head -11
Run Code Online (Sandbox Code Playgroud)
将打印具有最高组 ID 的 10 个进程,内部按内存使用情况排序。
小智 5
请注意,当前版本的 ps 具有基于字段代码(在 ps 手册页中给出)的排序能力。处理器使用的域代码是“c”。您可以--sort c
在 ps 命令的末尾使用,例如ps aux --sort c
这会将使用最多 cpu 的进程放在列表底部。通过向用于排序的域代码添加减号来反转列表的顺序,例如ps aux --sort -c