如何选择“顶部”的特定过程?


18

如果一个程序有多个实例,运行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等不熟悉。

Answers:


25

sed诸如此类的简单替代方法是tr

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

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

tr -s ' ' ','

另外,如果有可用的话,pgrep可以在这里正常工作:

top -p $(pgrep -d , program)

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

另外,请注意pgrep将返回“ program”的每个结果,因此,如果您有一个名为“ program-foo”的进程,则该进程也会被返回(因此名称为pgrep)。


对于多个程序top -p $(pgrep -d, "(nginx|mysql)" )
user2037659

6

sed将您替换,

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

3

这样可以很好地监视多个程序:

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

更好地使用:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.