如何用“top”选择特定进程?

如何用“top”选择特定进程?

如果一个程序有多个实例,运行pidof program会给出:

`1 2 3`

top -p接受逗号分隔的参数:1, 2, 3.

这意味着这top -p `pidof program`行不通:

    top: unknown argument '1'
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

你能告诉我如何做到这一点吗?我不熟悉 awk、sed 等......

答案1

sed像这样的简单事情的替代方法是tr

top -p $(pidof program | tr ' ' ',')

tr还可以轻松处理可变数量的空格:

tr -s ' ' ','

此外,如果你有可用的,pgrep可以在这里很好地工作:

top -p $(pgrep -d , program)

确保在-d和之间留有空格,,因为逗号是参数(分隔符)。

另请注意,pgrep 将返回“program”的每个结果,因此如果您有一个名为“program-foo”的进程,那么它也将被返回(因此得名 pgrep)。

答案2

sed将您的替换,

top -p $(pidof program | sed 's/ /, /g')

答案3

这对于监视多个程序非常有效:

top -p `pgrep -d, -f program1`, `pgrep -d, -f program2`

相关内容