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

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 me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.