如何使用“顶部”选择特定进程?

tsh*_*ang 18 shell top text-processing

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

`1 2 3`
Run Code Online (Sandbox Code Playgroud)

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 ...]
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*n D 26

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

top -p $(pidof program | tr ' ' ',')
Run Code Online (Sandbox Code Playgroud)

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

tr -s ' ' ','
Run Code Online (Sandbox Code Playgroud)

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

top -p $(pgrep -d , program)
Run Code Online (Sandbox Code Playgroud)

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

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


wag*_*wag 6

sed替换你,

top -p $(pidof program | sed 's/ /, /g')
Run Code Online (Sandbox Code Playgroud)