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)。