“top”未通过“ssh”显示输出

roc*_*tar 2 ssh command-line gnome-terminal

我在用

ssh user@host top
Run Code Online (Sandbox Code Playgroud)

显示top“主机”的输出,我得到

TERM environment variable not set.
Run Code Online (Sandbox Code Playgroud)

解决办法是什么?

我怎样才能top像那样在“主机”上运行并查看输出?

hee*_*ayl 5

top显示它在终端设备上的输出,而不是在任何标准流(例如 STDOUT/STDERR)上。由于在执行以下操作时远程主机没有涉及终端:

ssh user@host top
Run Code Online (Sandbox Code Playgroud)

它给出了有关TERM未设置环境变量的错误。

您需要使用以下-t选项在远程主机上分配一个伪 TTY ssh

ssh -t user@host 'top'
Run Code Online (Sandbox Code Playgroud)

现在您也可以以top通常的方式发送密钥,例如q退出、h寻求帮助等。

同样的解决方案适用于所有需要 TTY 来显示输出的程序。


为了完整起见,即使不涉及本地 TTY,您也可以通过使用多个-ts来分配伪 TTY,例如:

ssh -tt user@host 'top'
Run Code Online (Sandbox Code Playgroud)