我可以应用我想要的过滤器交互模式(按 o)。有没有办法以批处理模式获取这些。
我正在使用 procps-ng 版本 3.3.10。谢谢。
答案1
根据手册页,-p
命令行选项可用于限制哪些进程top
可以读取。它似乎不允许像交互模式一样进行过滤,但您可以通过检查 的输出获得基本相同的结果ps
。
例如,仅取具有三个以上线程的进程:
$ ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print $2; } }' | sort -u
在我的计算机上,这会打印出所有相关进程的列表,每行一个。ps
生成进程详细信息列表,awk
命令对其进行过滤,并sort
仅删除重复项。
为方便您使用,请检查您将需要哪些列ps
。在我的计算机上,线程数(“NLWP”)是第六列($6
),进程 ID(“PID”)是第二列($2
)。根据需要在命令中调整这些awk
以匹配您需要的过滤器。请注意$6
出现两次:第一次是为了确保它是一个数字而不是标题,第二次是为了确保它大于 3。
运行此命令后,必须将进程 ID 提供给top
。Bash 和其他 Shell 可能允许将程序的输出作为参数传递给另一个程序,因此最终命令可能是
$ top $(ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print "-p"$2; } }' | sort -u) ... And other options
"-p"
已添加以使输出与 配合使用top
。根据需要调整此命令以适合您的过滤器和 shell,将其放入批处理中,它应该可以工作。
注意:添加更多过滤器可能需要学习 awk。这并不太难。