2017-01-04 140 views
0

我想通过ssh使用顶部转储特定进程的cpu使用情况,我希望显示完整的命令行。 当我ssh到服务器,并在本地执行命令,我看到以下内容:不同的输出命令通过ssh

remote-server$ top -c -b -n 1 |grep redis-server 
5137 redis-user 20 0 83.5g 23g 884 S 13.7 29.3 13388:28 ./bin/redis-server *:11000 

但是,当我执行通过ssh相同的命令,我看到以下内容:

local-desktop$ ssh news-cache1 "top -c -b -n 1 |grep redis-server" 
5137 redis-user 20 0 83.5g 23g 884 S 13.7 29.4 13388:55 ./bin/redis-server 

我不明白为什么当我通过ssh运行命令时,我没有得到完整的命令行(带有主机和端口参数*:11000)。

谁能告诉我我做错了什么?

我的本地桌面是OS X,埃尔卡皮坦而远程服务器的CentOS 6

回答

0

重新运行在SSH -t选项的命令。

local-desktop$ ssh -t news-cache1 "top -c -b -n 1 |grep redis-server" 

当远程运行命令时,ssh客户端分配一个宽度有限的tty终端。分配的终端宽度不足以显示您感兴趣的全部行。添加-t会强制执行伪终端分配。从http://man.openbsd.org/ssh

-t Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty. 
+0

“SSH客户端分配与运行命令时远程有限宽度的TTY终端”实际上,它不会在所有时默认运行远程命令分配一个tty。 – Kenster

+0

谢谢kdeb。在ssh开始工作之后,我用pssh尝试了相同的命令,然后在分配终端(-X -tt)后失败了。看起来在pssh的情况下,伪终端宽度不够,最终可以通过设置终端宽度来实现,如下所示:'pssh -i -X -tt -H news-cache1“stty列200; top -c -b -n 1 | grep redis-server“' – Shital