Kontynuuj zadanie / zadania SSH w tle podczas zamykania SSH

27

Mam to samo pytanie co tutaj, ale nawet poza tym.

Jeśli wyloguję się / zakończę połączenie SSH, muszę, aby mój program działał w tle. Przed wyjściem wpisuję bgi jobssprawdzam zadanie uruchamiania w tle, ale po wyjściu z SSH program nie działa, zamyka się, kiedy zamykam okno SSH.

Co mogę zrobić, jeśli chcę, aby mój program nadal działał po zamknięciu okna SSH? Używam, nohup screenale to też nie działa, czy coś mi brakuje?

Huei
źródło
Witamy w Super User! Proszę nie podawać odpowiedzi na pytanie. Opublikuj go jako odpowiedź poniżej, gdy będziesz w stanie (za około 7 godzin) za pomocą przycisku Odpowiedz na pytanie . Dziękuję Ci. (Pamiętaj również, że nie musisz dodawać <br/>s do swojego postu. Po prostu rób akapity, jeśli to konieczne. A gdy już to robisz, używaj odpowiedniej
wielkości
BTW nie trzeba używać bgani nohuppodczas korzystania screen. Również to pytanie jest powiązane.
właśnie przeglądam
sprawdzasz ten wątek @ przepełnienie stosu stackoverflow.com/questions/285015/…
Ashildr

Odpowiedzi:

46

Kiedy używasz screen, musisz odłączyć za pomocą CTRL+A+ Dprzed wyjściem ssh.

Alternatywnie, jeśli chcesz uruchomić proces bezpośrednio z ekranem, możesz użyć

screen -dmSL [session name] [commands]
  • -d rozpoczyna sesję ekranową i natychmiast się od niej odłącza
  • -m wymusza utworzenie nowej sesji ekranowej
  • -S pozwala nadać sesji nazwę
  • -L włącza logowanie do ~/screenlog.0

przykład:

screen -dmSL workstuff myscript.sh

Następnie możesz:

wznowić później używając screen -x workstuff

lub

sprawdź plik dziennika less -r ~/screenlog.0

tylko przeglądam
źródło
14

Zastosowanie tmux. Nie jestem nawet pewien, czy screenjest jeszcze w trakcie aktywnego rozwoju. To rodzaj preferencji, ale jako ktoś, kto używa tmux, mogę zaświadczyć, że został skonfigurowany w około 5 minut i działał idealnie.

W systemie opartym na Debianie (na zdalnym komputerze):

sudo apt-get install tmux

następnie wejdź, tmuxaby wejść, uruchom dowolny potrzebny proces i naciśnij Ctrl+ Bwtedy D(to kończy sesję tmux). Następnie możesz wylogować się z SSH.

Gdy musisz wrócić / sprawdzić ponownie, uruchom SSH i wpisz tmux attach. Zabierze Cię z powrotem do tmuxsesji.

tmuxma o wiele więcej możliwości, jak wyszczególniono tutaj. Ale to powinno rozwiązać twój bezpośredni problem.

Powodzenia!

evamvid
źródło
7

W końcu rozwiązałem to za pomocą screen:

W trybie ekranu odłącz go, używając CtrlAD. Następnie możesz zamknąć okno SSH.

Huei
źródło
5

nohup use: Pierwsze z poniższych poleceń uruchamia program abcd w tle w taki sposób, że kolejne wylogowanie go nie zatrzymuje.

$ nohup abcd &

$ exit

Ashildr
źródło