SSH不发布终端

时间:2010-09-08 15:16:08

标签: ubuntu ssh capistrano

当我从macbook中运行以下命令到我的ubuntu服务器时,终端不会被释放。它只是坐在那里直到我控制命令。

ssh user@my-server 'sudo /etc/init.d/nginx start'

当我登录然后运行命令时,一切正常。

ssh user@my-server
sudo /etc/init.d/nginx start

以下是突出显示问题的输出

~ $ ssh me@somewhere.com
me@somewhere.com's password:
Last login: Mon Sep  6 15:18:18 2010 from
me@somewhere:~$ sudo /etc/init.d/nginx restart
[sudo] password for me:
Restarting nginx daemon: nginx.
me@somewhere:~$ exit
logout
Connection to somewhere.com closed.
~ $ ssh me@somewhere.com 'sudo /etc/init.d/nginx restart'
me@somewhere.com's password:
[sudo] password for me:

Restarting nginx daemon: nginx.

在最后一个命令执行后,它只保存在那里并且什么都不做。如果您有任何建议,请提前致谢。

me@somewhere:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.4 LTS"
me@somewhere:~$

更新

我认为init脚本也可能有错误。我已经为niginx使用了3个不同版本的init脚本,并且所有3个版本都有相同的问题。我目前正在运行这个脚本,它似乎是我发现的3个选择。

http://wiki.nginx.org/Nginx-init-ubuntu

我刚试过评论中建议的命令,问题完全一样。还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

好的,我设法通过强制伪tty分配来解决这个问题。只需在SSH命令中添加-t选项即可。这解决了问题,仍然允许您查看输出。所以......

ssh user@my-server 'sudo /etc/init.d/nginx start'

...变为

ssh -t user@my-server 'sudo /etc/init.d/nginx start'

答案 1 :(得分:0)

简短版:

让我们分两步尝试:

  1. 使用您的创建脚本 服务器上的命令
  2. 从笔记本电脑启动该脚本
  3. 详细版本

    在你的ubuntu框中,用这个内容创建一个脚本(比方说/my/path/nginx-my-start.sh)

      

    sudo /etc/init.d/nginx start 1> / dev / null

    不要忘记给它执行权限(chmod + x /my/path/nginx-my-start.sh)

    然后从您的笔记本电脑打电话:

      

    ssh user @ my-server /my/path/nginx-my-start.sh

    <强>说明

    我想要远程启动的tomcat有同样的问题。在脚本中添加stdout重定向'1&gt; / dev / null'完成了这项工作。