Nohup ponad ssh nie wróci

11

Próbuję to zrobić

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

Moim celem jest uruchomienie procesu na serwerze, a następnie natychmiast powrót.

To nie działa: zadanie jest uruchamiane na serwerze, ale nadal otrzymuję dane wyjściowe na moim komputerze i bash czekam na zakończenie przed poproszeniem mnie o kolejne polecenie.

Dlaczego ? To nie powinno! Jakiś sposób, aby tego uniknąć?

  • myPc jest RHEL6.2
  • serwer to ubuntu 10.04i
  • oba biegnie openssh
użytkownik1219721
źródło

Odpowiedzi:

12

Tak długo, jak wejście lub wyjście są nadal otwarte, ssh utrzyma połączenie otwarte. Aby rozwiązać ten problem, upewnij się, że wejście i wyjście nie są otwarte.

Na przykład użyj ssh -ni przekieruj dane wyjściowe:

ssh -n [email protected] "nohup myscript.sh >/dev/null 2>&1 &"
Michael Hampton
źródło
Co jeśli nadal chcę myscript.shdać wynik, ale sesja ssh nadal się kończy po zakończeniu skryptu? W moim przypadku sam skrypt rozpoczyna proces nohup, a następnie zwraca. Miałem wrażenie, że ssh -Tto mi pomoże.
Gauthier
@Gauthier Następnie uruchom skrypt bez nohup.
Michael Hampton
Ja robię. Skrypt uruchamia inne polecenia za pomocą nohup i &, a następnie kończy. Ale ssh nie powraca. Polecenia wywoływane w skrypcie przekierowują standardowe wyjście do plików. Och, ale nie stderr i stdin, czy to może być dlaczego?
Gauthier
Masz to! Wejścia i wyjścia muszą zostać przekierowane.
Michael Hampton
Nie rozumiem tylko tego, że jeśli faktycznie się zaloguję i dostanę tty, uruchom skrypt uruchamiający polecenia nohup i polecenia, a następnie wyloguję się z sesji ssh. Nie narzeka, że ​​istnieją otwarte dane wejściowe i wyjściowe. Czy nie ssh -tto ma naśladować?
Gauthier