对 ps 的输出进行排序不起作用

对 ps 的输出进行排序不起作用

我想对输出进行排序以下命令基于pcpu

ps -p 29492 -L -o pid,tid,psr,pcpu

我尝试了以下方法:

ps -p 29492 -L -o pid,tid,psr,pcpu --sort=pcpu

但这似乎不起作用。我怎样才能解决这个问题?

答案1

很可能在你的实现中ps,排序仅适用于进程,而不适用于线程(请参阅fancy_spew()procps'display.c)。据我所知,如果你想对线程进行排序,你需要对输出进行后处理;例如

ps -p 29492 -L -o pid,tid,psr,pcpu | sort -n -k4,4

但随后标题行会在输出中混淆。如果想保留标题行,可以把它拉出来单独打印:

ps -p 29492 -L -o pid,tid,psr,pcpu | sed -e1\!b -e'w /dev/fd/2' -ed | sort -n -k4,4

您还可以通过为所有输出选择器指定空白标题值来简单地删除标题行:

ps -p 29492 -L -o pid=,tid=,psr=,pcpu= | sort -n -k4,4

-r在所有这些情况下,您可以通过添加参数来反转排序sort。排序顺序可能受LC_NUMERIC或 的影响LC_ALL;设置LC_ALL=C将正确地用小数点对值进行排序.

相关内容