逐行获取程序的pid

for*_*une 6 shell process

我可以通过发出这样的命令来找到我的程序实例的 pid:

pidof avconv
Run Code Online (Sandbox Code Playgroud)

这给了我结果

16616 16283 16279 16198 16175 16035 15073 14049 4922
Run Code Online (Sandbox Code Playgroud)

但是如何逐行输出相同的结果,例如:

16616 
16283 
16279 
16198 
16175 
16035 
15073 
14049 
4922
Run Code Online (Sandbox Code Playgroud)

ter*_*don 15

您可以sed按照@Sobrique 的建议使用 解析输出,或者使用tr

pidof avconv | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用pgrep

$ pgrep avconv16616 
16283 
16279 
16198 
16175 
16035 
15073 
14049 
Run Code Online (Sandbox Code Playgroud)


mik*_*erv 8

你可以一开始就这样……

ps -C avconv -o pid=
Run Code Online (Sandbox Code Playgroud)


Sob*_*que 5

你总是可以sed用来插入一些换行符

pidof avconv | sed 's/ /\n/g'
Run Code Online (Sandbox Code Playgroud)

虽然也许一个更大的问题是 - 为什么你需要它们在不同的行?可能有更合适的答案。

  • 严格来说,`tr` 应该快一点,因为它在字符级别工作而不是解析正则表达式。例如,对于一个 9MB 的文件,sed 需要 55 秒,而 tr 需要 19。 (2认同)