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

11

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

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

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

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

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

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

Ответы:

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должно подражать?
Готье