SSH не выпускает терминал

Когда я запускаю следующую команду с моего macbook на свой сервер ubuntu, терминал не освобождается. Он просто сидит там, пока я не нажму Control-C на команду.

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

Когда я вхожу в систему, а затем запускаю команду, все работает нормально.

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

Вот вывод, освещающий проблему

~ $ ssh [email protected]
[email protected]'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 [email protected] 'sudo /etc/init.d/nginx restart'
[email protected]'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:~$

Обновлять:

Я думал, что в сценарии инициализации тоже может быть ошибка. С тех пор я использовал 3 разные версии сценария инициализации для niginx, и у всех 3 была одна и та же проблема. В настоящее время я запускаю этот скрипт, который, кажется, является выбором из трех, которые я нашел.

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

Я только что попробовал команду, предложенную в комментариях, и проблема точно такая же. Любые другие идеи?


person Stewart    schedule 08.09.2010    source источник
comment
похоже на ошибку в сценарии запуска nginx. это работает, когда sshing, а затем выдает sh -csudo /etc/init.d/nginx reboot ?   -  person BatchyX    schedule 08.09.2010


Ответы (2)


ОК, мне удалось исправить это, заставив выделение псевдотерминала. Просто добавьте параметр -t в команду SSH. Это устраняет проблему и по-прежнему позволяет вам видеть результат. Так...

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

становится...

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

person Stewart    schedule 09.09.2010

Краткая версия:

давайте попробуем это в 2 шага:

  1. Создайте скрипт с вашей командой на вашем сервере
  2. Запустите этот скрипт с вашего ноутбука

Подробная версия

В вашем ящике 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

Пояснения

У меня была точно такая же проблема с котом, которого я хотел запустить удаленно. Добавление перенаправления stdout '1>/dev/null' в скрипт помогло.

person Matthieu FAURE    schedule 10.09.2010