Nohup через ssh не вернется


11

Я пытаюсь сделать

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

Моя цель - запустить процесс на сервере, а затем сразу же вернуться.

Это не работает: задание запускается на сервере, но я все еще получаю вывод на myPc, и bash ждет завершения, прежде чем запрашивать у меня другую команду.

Почему ? Это не должно! Есть ли способ избежать этого?

  • myPc is RHEL6.2
  • сервер ubuntu 10.04и
  • обе трассы openssh

Ответы:


12

Пока вход или выход остаются открытыми, ssh будет держать соединение открытым. Чтобы решить эту проблему, убедитесь, что вход и выход не открыты.

Например, используйте ssh -nи перенаправьте ваш вывод:

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

Что, если я все еще хочу myscript.shдать мне вывод, но сеанс ssh по-прежнему завершается после завершения сценария? В моем случае скрипт сам запускает процесс nohup, а затем возвращает. У меня сложилось впечатление, что ssh -Tэто поможет мне сделать это.
Готье

@Gauthier Тогда просто запустите скрипт без nohup.
Майкл Хэмптон

Я делаю. Сценарий запускает другие команды с nohup и &, затем завершается. Но SSH не возвращается. Команды, вызываемые в скрипте, перенаправляют стандартный вывод в файлы. О, но не stderr и stdin, это может быть почему?
Готье

Вот оно! Вход и выход должны быть перенаправлены.
Майкл Хэмптон

Чего я не понимаю, так это того, что если я на самом деле войду в систему и получу tty, запустите скрипт, который запускает команды nohup &, то мне будет разрешено выйти из сеанса ssh. Не жалуется, что есть открытый вход и выход. Разве это не то, что ssh -tдолжно подражать?
Готье
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.