Czasami mam długotrwałe procesy, które chcę rozpocząć przed powrotem do domu, więc tworzę sesję SSH na serwerze, aby rozpocząć proces, ale potem chcę zamknąć laptopa i wrócić do domu, a później, po obiedzie, chcę sprawdź proces, który rozpocząłem przed wyjściem z pracy. Jak mogę to zrobić za pomocą SSH? Rozumiem, że jeśli przerwiesz połączenie SSH, przerwiesz także sesję logowania na serwerze, tym samym zabijając długo działający proces.
command-line
ssh
process
gnu-screen
λ Jonas Gorauskas
źródło
źródło
nohup
przechwytuje SIGHUP tak, że gdy powłoka, która go uruchomiła, kończy pracę i wysyła SIGHUP do wszystkich wciąż działających dzieci,long-running-process
nie umiera.disown
po prostu usuwa określone zadanie z listy potomków Basha, aby w ogóle nie próbowało wysłać SIGHUP.nohup
to program niezależny od powłoki, więc działa ze wszystkimi powłokami, podczas gdydisown
jest wbudowany w Bash.nohup
akceptuje polecenie uruchomienia, podczas gdydisown
działa tylko po uruchomieniu zadania i utworzeniu tła, aby można było wrócić do powłoki.tail -f nohup.out
aby sprawdzić, co się dzieje, gdy wrócisz.Chcesz używać GNU Screen. To jest super niesamowite!
CTRL+ a, daby oderwać się od sesji ekranowej
Po powrocie do laptopa:
Następnie sprawdź postęp swojego długotrwałego procesu!
screen
jest bardzo wszechstronnym narzędziem i może zrobić znacznie więcej niż opisałem. Podczas sesji ekranowej spróbuj ctrl + a ,? nauczyć się kilku typowych poleceń. Prawdopodobnie najczęstsze to:screen -d -r
aby upewnić się, że jeśli do mojej sesji ekranu zostanie dołączona inna powłoka, zostanie ona odłączona przed wznowieniem jej w moim bieżącym systemie.źródło
screen -S name
i pozwól, aby drugi znajomy się z nim połączyćscreen -x name
.tmux
ztmuxinator
jest świetnym połączeniem do fantazyjnych konfiguracji, a ja wolęscreen
jako szybkie i proste rozwiązanie.Jeśli nie planowałeś wcześniej i nie skonfigurowałeś
screen
itp., Po prostu wykonaj następujące czynności:Jeśli proces działa w tle: goto # 3, w przeciwnym razie:
Ctrl-Z
aby zawiesić proces pierwszego planu. Spowoduje to zgłoszenie numeru zadania zawieszonego procesu, na przykład:Wyślij
processName
do tła zabg %1
pomocą (używając tego, co # wykonuje po%
). To zostanie wznowioneprocessName
w tle.Usuń
processName
zdisown %1
lubdisown PID
. Użyj-h
flagi, jeśli chcesz zachować własność do momentu zakończenia bieżącej powłoki.źródło
&
kiedy ją rozpocząłem. To wydaje się działać świetnie!To, czego chcesz użyć, to screen, a jeszcze lepiej przyjazne dla użytkownika opakowanie wokół ekranu o nazwie byobu.
Screen pozwala na uruchomienie wielu wirtualnych sesji terminalowych w tej samej sesji ssh. Dostępne są samouczki i strony pomocy .
byobu to opakowanie, które pozwala łatwo otwierać nowe ekrany za pomocą prostego klawisza funkcyjnego zamiast kombinacji klawiszy z ctrl-a. Pokazuje także linię statusu ze wszystkimi otwartymi wirtualnymi terminalami, które można nazwać.
Inną ciekawą funkcją jest fakt, że cały ekran może pozostać włączony, gdy połączenie ssh jest rozłączone. Po prostu łączysz się ponownie przez ssh i dzwonisz byobu i wszystko jest jak wcześniej.
Nareszcie zrzuty ekranu z Byobu.
źródło
Warto to zauważyć
ssh -t lala screen -rxU moo
dołączy do sesji moo na lali hostassh -t lala screen -S moo
utworzy sesję moo na lali hostai
ssh -t lala screen -S moo quux
stworzy moo sesję na hosta Lala i uruchomić program quux , kończenie sesji w dniu zakończenia.źródło
Stare pytanie, dziwne, wciąż nikt nie radził Tmuxowi , który działa jak opakowanie dla n konsol i utrzymuje je otwarte, dopóki nie będą potrzebne. Pozwala to na większą kontrolę, oprócz wielu funkcji, które posiada tmux. Łatwo nim zarządzać, po prostu uruchom tmux, który wprowadza cię do powłoki, uruchom swoją dłuższą pracę, a następnie naciśnij ctrl + b, a następnie d (odłącz) (
ctrl+b
to „ok google” tmux id
jest to polecenie zamknięcia bez wyjścia z powłoki). To faktycznie działa, jeśli po prostu zamkniesz, na przykład kit. Po obiedzie, kiedy ponownie się połączysz, możesz ponownie otworzyć tmux,tmux attach
aby zobaczyć ekran dokładnie tak, jak opuściłeś. Coś, co uwielbiam, to podzielenie okienka:ctrl+b
a następnie naciśnij"
. Aby przejść z jednego panelu do drugiego,ctrl+b
a następnie naciśnij przycisk strzałki w górę / w dół.źródło
Dobry przewodnik znajdziesz tutaj: utrzymuj działanie sesji SSH podczas rozłączania
Teraz możesz rozpocząć nową sesję ekranu, wpisując screen w wierszu poleceń. Pojawi się kilka informacji o ekranie. Naciśnij Enter, a pojawi się normalny monit.
Aby rozłączyć (ale pozostawić sesję uruchomioną), naciśnij Ctrl+, Aa następnie Ctrl+ Dnatychmiast po sobie. Zobaczysz komunikat [odłączony]
Aby ponownie połączyć się z już uruchomioną sesją
Aby ponownie połączyć się z istniejącą sesją lub utworzyć nową, jeśli taka nie istnieje
Aby utworzyć nowe okno wewnątrz ekranu działa sesja Hit Ctrl+ A, a następnie Cw bezpośrednim rzędu. Zobaczysz nowy monit.
Aby przełączyć z jednego okna ekranowego do drugiego Hit Ctrl+, Aa następnie Ctrl+ Anatychmiast po sobie.
Do listy otwartych okien na ekranie Hit Ctrl+ A, a następnie Ww bezpośrednim rzędu
źródło
<kbd>Ctrl</kbd>
aby wyświetlić nazwy jako klawisze klawiatury.Używam NX NoMachine, który jest dla mnie darmowy, ponieważ to tylko ja. Zasadniczo uruchamia sesję X na serwerze, z którą można się łączyć i rozłączać od nowa. Sesja X działa, gdy nie masz połączenia. Połączenia można nawiązywać z dowolnego miejsca. Możesz wybierać między ruchomymi oknami lub pojedynczym oknem zawierającym cały pulpit (np. Kompletny pulpit Gnome). Klient (który można uruchomić na laptopie) można uruchomić w systemie Linux, MacOS, Solaris lub Microsoft Windows. W tym drugim przypadku, jeśli wybierzesz pływające okna, pojawią się one osobno na pasku zadań systemu Windows.
Używam laptopa z systemem Windows XP (którego potrzebuję do określonego sprzętu Windows, który mam) jako interfejsu dla moich dwóch serwerów Linux korzystających z NX Nomachine. Mogę nawet drukować na drukarce podłączonej do mojego laptopa z systemem Windows z systemu Linux.
źródło