Jak utrzymać działanie programu po rozłączeniu SSH? [duplikować]

15

Możliwe duplikaty:
utrzymuj działanie programu po zamknięciu konsoli, po uruchomieniu programu
Jak mogę użyć ssh, aby uruchomić polecenie na zdalnej maszynie uniksowej i wyjść przed zakończeniem polecenia?

Cześć!

Chcę uruchomić program z mojego notebooka poprzez połączenie SSH ze zdalnym serwerem. Problem w tym, że wracam do domu z moim notatnikiem :)

Jak utrzymać działanie programu?

Max
źródło

Odpowiedzi:

22

„ekran” jest najprawdopodobniej tym, czego chcesz. Umożliwia rozłączanie i ponowne podłączanie do woli. Po SSH na serwerze, uruchom ekran przed uruchomieniem programu. Ctrl-a, Ctrl-d rozłączą cię (program będzie kontynuował niezależnie). Po powrocie „screen -r” połączy Cię ponownie, jakbyś nigdy nie był nieobecny.

Pomyśl o tym jak o VNC lub RDP dla terminali tekstowych. Wyszukaj „korzystanie z ekranu” w wielu samouczkach.

Edytowano, aby dodać: W tych czasach polecam zamiast tego tmux , zwłaszcza jeśli jest używany w połączeniu ze skryptem tmx . Możliwość dzielenia szyb (w pionie i poziomie) i zmieniania ich rozmiarów to ogromny dar na ekranie.

Chris
źródło
5
Nawiasem mówiąc, ekran będzie nadal działać, jeśli upłynie limit czasu połączenia lub coś podobnego, gdy nadal będziesz z nim związany. Kilka przydatnych poleceń: ctrl + a, ctrl + d = odłącz od ekranu, screen -r = podłącz ponownie do ekranu, screen -x = dołącz do ekranu w trybie współdzielonym (może być używany do nauczania itp., Dwóch użytkowników może współdzielić ten sam ekran), ctrl + a, esc = przejdź do trybu przewijania (naciśnij q, aby wyjść ponownie). UWAGA: Jeśli uruchomisz ekran, wpisując „program ekranowy”, natychmiast uruchomi on program na ekranie, ale jeśli wyjdzie, utracisz bufor. Wpisanie po prostu „screen” da ci trwały terminal.
Chris, również tnx za przydatną odpowiedź.
18

nohup to polecenie, które uruchomi inne polecenie i uczyni je odpornym na sygnał „zawieszenia”.

Uruchamiasz go tak prosto, jak:

nohup command

ale musisz także przekierować stdin, stdout i stderr. Zobacz stronę podręcznika, aby uzyskać więcej informacji.

Prawdopodobnie zechcesz umieścić to w tle.

Musisz także znać killpolecenie, aby je ostatecznie zabić.

Dziwne
źródło
Tak, bardzo dużo! tak łatwo))
Tego używam. Bardzo, bardzo łatwe. Służy teedo przekierowywania stdin, stdout i stderr.
Ritwik Bose