以批处理模式应用顶级过滤器

以批处理模式应用顶级过滤器

我可以应用我想要的过滤器交互模式(按 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。这并不太难。

相关内容