将多行从 awk 传递到 xargs

将多行从 awk 传递到 xargs

我想要一种简单的方法来监视与某些关键字匹配的进程的资源使用情况。

所以我做了类似的事情:

ps -aux | grep XX | awk 'FNR == 2 {print $2}' | xargs -o -I {} top -p {}

pgrep在我的情况下不起作用)

这使我能够获取输出第二行的 PIDps并将其传递给top.我只能监控以这种方式进行处理。

但是假设有很多行与搜索词匹配,并且我想使用 来监视所有行top

因此该awk命令将是公正的{print $2},它将输出多行,每行都有 1 个 PID。

我想要有类似的东西top -p PID1 -p PID2 ...

我如何将所有这些 PID 传递给topvia xargs(或其他简单的方法)?

答案1

思考这就是你所要求的:

ps -aux | awk 'BEGIN{printf "top "} /XX/{printf "-p %s ",$2}END{print ""}'|xargs -o -I {} bash -c "{}"

相关内容