当我从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
我刚试过评论中建议的命令,问题完全一样。还有其他想法吗?
答案 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)
简短版:
让我们分两步尝试:
详细版本
在你的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'完成了这项工作。