我正在尝试top
使用-p
选项和xargs
. 但是,top
无法运行并出现错误top: failed tty get
:
$ pgrep gvfs | paste -s -d ',' | xargs -t top -p
top -p 1598,1605,1623,1629,1635,1639,1645,1932,2744
top: failed tty get
我使用-t
选项xargs
来查看即将执行的完整命令。看起来不错,我可以手动成功运行它:
top -p 1598,1605,1623,1629,1635,1639,1645,1932,2744
但是,它不与xargs
. 这是为什么?
事实证明,
--open-tty
对于xargs
交互式应用程序(如top
. 来自man xargs:要运行的命令
top
应该是:top
是一个交互式程序,例如,您可以键入i
以切换显示空闲进程。虽然它可以安排在实践中读取,/dev/tty
但它希望标准输入连接到终端。对于您的示例,只需使用命令替换而不是
xargs
,例如shell 首先运行 pgrep 并粘贴,从这些命令中获取输出,然后使用该输出调用 top。