SSH не выходит из командной строки - PullRequest
3 голосов
/ 03 августа 2010

Я ssh на другой сервер и запускаю скрипт оболочки, как это nohup ./script.sh 1>/dev/null 2>&1 &

Затем введите exit для выхода с сервера. Однако это просто висит. Сервер солярис.

Как правильно выйти без зависания ??

Спасибо.

Ответы [ 4 ]

7 голосов
/ 03 августа 2010

Я предполагаю, что этот скрипт долго работает.В этом случае вам необходимо отсоединить процесс от терминала, который вы хотите закрыть при завершении сеанса SSH.

Фактически вы уже выполнили большую часть работы, переназначив stdout и stderr на /dev/null, однако вы не сделали этого для stdin.

Я использовал тестовый пример:

ssh localhost
nohup sleep 10m &> /dev/null &
^D 
# hangs

Пока

ssh localhost
nohup sleep 10m &> /dev/null < /dev/null &
^D 
# exits

Я секундуюРекомендация по использованию превосходного gnu screen, который, помимо прочего, сделает этот сервис для вас.

О, а вы рассматривали запуск сценария напрямую, а не внутри оболочки?Т.е.:

ssh user@host script.sh
1 голос
/ 03 августа 2010

Если вы пытаетесь оставить команду запущенной удаленно после закрытия ссылки SSH, я настоятельно рекомендую вам использовать screen и научиться отсоединять экран.Это намного лучше, чем оставлять фоновые процессы вокруг;он также позволяет вам повторно подключиться и посмотреть, что происходит в процессе.

Поскольку вы не предоставили нам script.sh, я не думаю, что мы можем точно знать, почему команда зависает.

0 голосов
/ 08 августа 2013

Вы можете использовать команду:

~.

Эта команда закрывает сессию ssh.

0 голосов
/ 03 августа 2010
sh -c ./script.sh &
...