ps命令是理解Linux系统上运行的内容和每个进程使用的资源的关键。了解如何显示ps以任何方式提供的信息都是非常有用的,这些信息可以帮助您集中精力解决您要解决的问题。这样做的一个方面是能够按任何列对ps aux命令的输出进行排序,以突出显示特定的信息,例如进程使用了多少内存或运行了多长时间。
技巧包括使用ps命令的 --sort 选项并知道如何指定要用于排序的列。默认情况下,ps按进程id(PID)排序,首先显示最小的。PID 1将出现在列表的顶部,在列标题的正下方。其余的将按数字顺序排列。
下面是一个标准ps-aux输出的例子。可能看起来很眼熟。
[email protected]:~/www.linuxmi.com$psaux|head-5
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root10.00.417178816056?Ss08:590:05/sbin/initsplash
root20.00.000?S08:590:00[kthreadd]
root30.00.000?I<08:590:00[rcu_gp]
root40.00.000?I<08:590:00[rcu_par_gp]
使用--sort选项,如果按PID排序,您将得到相同的输出。注意,您需要输入小写的“pid”。但是,您可以将“pid”更改为任何其他列并按该列排序。
[email protected]:~/www.linuxmi.com$psaux--sortpid|head-5
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root10.00.417178816056?Ss08:590:05/sbin/initsplash
root20.00.000?S08:590:00[kthreadd]
root30.00.000?I<08:590:00[rcu_gp]
root40.00.000?I<08:590:00[rcu_par_gp]
要查看首先列出的选定列的最大值,必须更改排序选项(例如,用-pid代替pid)。请注意,在这种情况下,显示如何以最高的进程ID开始。将-看作是降序值(最大值在前),而名称(例如pid)或带有加号的名称(例如+pid)表示升序。下面显示的命令按进程ID排序,首先显示最大的。
[email protected]:~/www.linuxmi.com$psaux--sort-pid|head-5
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
linuxmi385790.00.011368596pts/2S+13:330:00head-5
linuxmi385780.00.0151243788pts/2R+13:330:00psaux--sort-pid
linuxmi385710.20.1139605240pts/2Ss13:320:00bash
root385460.00.000?I13:320:00[kworker/0:3]
要按其他列排序,您需要使用其列名。在此示例中,“ pmem”表示内存使用的百分比,使用“ -pmem”表示我们将首先查看使用最多内存的进程。您也可以使用“%mem”和“-%mem”。
[email protected]:~/www.linuxmi.com$psaux--sort-pmem|head-5
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
mysql15590.28.91282972357304?Ssl08:590:34/usr/sbin/mysqld
linuxmi236180.18.43424800338068?Ssl09:290:28/usr/bin/gnome-shell
linuxmi254740.07.1971780286636?Sl09:300:07/usr/bin/gnome-software--gapplication-service
linuxmi239200.05.71143616228824?Sl09:290:08/snap/snap-store/467/usr/bin/snap-store--gapplication-service
如果只想查看ps输出的选择列,则可以在此示例中进行指定,其中仅显示命令及其CPU使用率,并按最大CPU使用率对输出进行排序。
[email protected]:~/www.linuxmi.com$ps-eocomm,pcpu--sort-pcpu|head-5
COMMAND%CPU
tracker-extract4.6
systemd-hostnam1.8
netdata1.7
apps.plugin1.7
以下是列名称和字符串的列表,可用于对它们进行排序:
ColumnAscendingDescending
HeadingSortSortAlternatives
===============================================
USERuser-user
PIDpid-pid
%CPUpcpu-pcpu%cpuand-%cpu
%MEMpmem-pmem%pmemand-%pmem
VSZvsz-vsz
RSSrss-rss
TTYtty-tty
STATstat-stat
STARTstart-start
TIMEtime-time
COMMANDcomm-comm
使用sort命令
您还可以将ps aux命令的输出通过管道传输到sort命令,并使用列号(1到11)选择要用于排序的列。这种方法有两个缺点:1)列标题将与ps输出的其余部分一起排序,可能会在您不希望看到的地方结束;2)当排序需要数值时,您需要在sort命令中添加一个“n”。ps命令理解这种区别;像这样的命令会根据内存使用情况进行排序。sort命令使用"-nk 4"对排序输出中的(-k 4) 4th数据列进行数字排序。
[email protected]:~/www.linuxmi.com$psaux|head-1;psaux|sort-r-nk4|head-3
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
mysql15590.28.91282972357304?Ssl08:590:35/usr/sbin/mysqld
linuxmi236180.28.63432704346044?Ssl09:290:38/usr/bin/gnome-shell
linuxmi254740.07.1971780286636?Sl09:300:07/usr/bin/gnome-software--gapplication-service
使用别名
即使ps命令的灵活性可以满足您的需求,您也可以始终创建别名,这样就不必计数列和/或考虑列值是否为数字。这里有些例子:
aliasLmCPU='psaux--sort-%cpu'
aliasLmMem='psaux--sort-%mem'
aliasTopCPU='psaux--sort-%cpu|head-11'
aliasTopMem='psaux--sort-%mem|head-11'
总结
ps命令使按任何数据列对输出进行排序变得相当容易。了解关于 --sort 选项和如何使用它的更多信息,以及如何将ps输出传递给sort命令。
电子消费 21-04-08
电子消费 21-04-08
数码 21-04-08
电子消费 21-04-08
数码 21-04-08
前沿动态 21-04-08
热点 21-04-08
热点 21-04-08
企业前沿 21-04-08
企业前沿 21-04-08
前沿动态 21-04-08
业界 21-04-08
数码 21-04-08
热点 21-04-08
电商 21-04-08
电商 21-04-08
电商 21-04-08
业界 21-04-08
国际新闻 21-04-08
企业前沿 21-04-08