Articles

15 Linux Screen Polecenie do obsługi sesji terminalowych

Posted on

Screen lub GNU screen jest multiplekserem terminalowym. Używając go, możesz uruchomić dowolną liczbę aplikacji konsolowych, interaktywnych powłok poleceń, aplikacji opartych na kursach, itp. Możesz użyć screen do kontynuowania działania programu po przypadkowym zamknięciu terminala, lub nawet po wylogowaniu i późniejszym wznowieniu gdziekolwiek jesteś.

Praktycznym przykładem jest sytuacja, gdy uruchamiasz zadanie na zdalnej maszynie Linux, do której masz sesję ssh. Wiele razy widziałeś jak sesja ssh zostaje przerwana i nie możesz już pracować. Oto nadchodzi narzędzie screen, aby pomóc wznowić sesje.

Jak działa screen?

Gdy screen jest wywoływany, tworzy pojedyncze okno z powłoką (lub określonym poleceniem), a następnie schodzi ci z drogi, abyś mógł używać programu tak jak zwykle. Następnie, w dowolnym momencie, możesz tworzyć nowe (pełnoekranowe) okna z innymi programami w nich (włączając w to więcej powłok), zabić bieżące okno, przeglądać listę aktywnych okien, kopiować tekst pomiędzy oknami, przełączać się pomiędzy oknami, itd.

Screen zarządza sesją składającą się z jednego lub więcej okien, z których każde zawiera powłokę lub inny program. Ponadto, screen może dzielić ekran terminala na wiele regionów, z których każdy wyświetla zawartość okna. Wszystkie okna uruchamiają swoje programy całkowicie niezależnie od siebie. Programy kontynuują działanie nawet wtedy, gdy ich okno nie jest widoczne i nawet gdy cała sesja screen jest odłączona od terminala użytkownika. Jest to praktyczne rozwiązanie zapobiegające mimowolnemu kończeniu sesji ssh timeout.

Sprawdźmy teraz, jak używać tego narzędzia w Linuksie.

1) Wywołuj nowe okna

Jeśli komenda screen nie jest jeszcze obecna w twoim systemie, możesz ją zainstalować za pomocą poniższej komendy.

Na Debianie

# apt-get install screen

Na Centosie

# yum install screen

Możesz uruchomić screen po prostu wpisując screen w wierszu poleceń. To polecenie screen uruchomi nowe okno w obrębie ekranu.

# screen

Możesz uruchomić nowe okno w obrębie ekranu, a także nadać mu nazwę, na przykład aloft. Tworzy to sesję z identyfikowaną przez tę nazwę. Nazwa może być użyta do ponownego dołączenia na późniejszym etapie.

# screen -S aloft

Zauważ, że możesz wykonywać wszystkie swoje prace tak jak w normalnym środowisku CLI.

2) Lista wszystkich procesów ekranowych

Jako, że jesteśmy w stanie rozpocząć nowe okna w obrębie ekranu, możliwe jest wyświetlenie aktualnie otwartych ekranów, w tym tych działających w tle. Będzie to lista wszystkich istniejących sesji ekranu.

# screen -lsThere is a screen on: 10437.aloft (Attached)1 Socket in /var/run/screen/S-root.

3) Główne polecenia ekranu

Możliwe jest operowanie z ekranem za pomocą niektórych poleceń. Poniżej wymienimy główne komendy, które są bardziej przydatne.

  • Ctrl-a a następnie c: utwórz nowe okno
  • Ctrl-a a następnie w: wyświetlenie listy wszystkich aktualnie otwartych okien
  • Ctrl-a, a następnie A: zmiana nazwy aktualnych okien. Nazwa pojawi się na liście okien otwartych za pomocą Ctrl-a a następnie w.
  • Ctrl-a po czym n: przejdź do następnych okien
  • Ctrl-a po czym p: przejście do poprzednich okien
  • Ctrl-a po czym Ctrl-a: powrót do ostatnio używanych okien.
  • Ctrl-a po czym następuje numer od 0 do X: przejście do okien nr X.
  • Ctrl-a po czym następuje ": wybór okien, do których chcemy przejść.
  • Ctrl-a po czym k: zamknij bieżące okna (kill)
  • Ctrl-a po czym S: podziel bieżące okna poziomo. Aby przełączać się między oknami, wykonaj Ctrl-a, a następnie Tab.
  • Ctrl-a, a następnie |: podziel bieżące okna w pionie
  • Ctrl-a, a następnie d: odłącz sesję ekranową bez jej zatrzymywania
  • Ctrl-a po czym r: ponowne dołączenie odłączonej sesji ekranu
  • Ctrl-a, a następnie : wklejenie skopiowanego tekstu

4) Pokaż parametr ekranu

Możesz wyświetlić listę wszystkich parametrów ekranu dla pomocy. Aby to zrobić, wpisz Ctrl-a, a następnie znak ?. Zostanie wyświetlona lista wszystkich poleceń.

5) Odłączanie sesji

Najlepszą zaletą polecenia screen jest możliwość odłączenia sesji ekranowej. Można uruchomić sesję ekranową na jednym komputerze w biurze, odłączyć sesję od lokalnego terminala, wrócić do domu, zalogować się zdalnie do naszego komputera w biurze i ponownie dołączyć sesję ekranową do terminala naszego komputera w domu. W tym czasie wszystkie zadania na komputerze biurowym były nadal wykonywane. Funkcja ta służy do zapobiegania utracie danych, która następuje nagle podczas zerwania połączenia ssh.

Aby dobrze zrozumieć o czym mówimy, posłużmy się przykładem. Uruchamiamy proces instalacji.

Teraz odrywamy ekran za pomocą Ctrl-a a następnie d. Możemy to sprawdzić za pomocą poniższej komendy.

# screen -lsThere is a screen on: 12449.win (Detached)1 Socket in /var/run/screen/S-root.

Możliwe jest odłączenie ekranu za pomocą komendy screen -d po której następuje id ekranu lub jego nazwa. Oznacza to, że będziesz musiał otworzyć inne okno lub konsolę, aby odłączyć sesję, jeśli w bieżącej konsoli trwa proces. Musisz najpierw wyświetlić listę aktualnie załączonych ekranów.

# screen -lsThere is a screen on: 13686.win200 (Attached)1 Socket in /var/run/screen/S-root.

Teraz w nowym terminalu wpisz poniższe polecenie.

# screen -d 13686

albo możesz użyć nazwy

# screen -d win200

Wyświetli się wyjście jak poniżej, które wskazuje, że ekran został odłączony.


6) Ponowne dołączenie sesji

Po odłączeniu ekranu, możliwe jest ponowne dołączenie go za pomocą polecenia. Zazwyczaj sesja ekranu nadal działa, więc wszystkie procesy nie są zatrzymane. Przed ponownym dołączeniem sesji, musisz wylistować sesję jak powyżej, a następnie wybrać sesję do ponownego dołączenia.

# screen -r 13686

Albo możesz użyć

# screen -r win200

Możesz zobaczyć, że po ponownym dołączeniu sesji, okna pokazują koniec procesu, który jest zakończony. Oznacza to, że możesz pracować na ssh i odłączyć sesję, którą ponownie podłączysz w swoim domu, aby kontynuować proces pracy bez utraty czegokolwiek.

7) Utwórz nową interaktywną powłokę

Jeśli masz jakieś zadania do wykonania i nie chcesz stracić swojej pracy, możliwe jest stworzenie nowej interaktywnej powłoki. Możesz łatwo mieć kilka interaktywnych powłok (ponumerowanych od 0 do X) otwartych w jednym oknie terminala. Kiedy rozpoczniesz nową sesję, będziesz w powłoce 0.

Aby to zrobić, musisz utworzyć nowe okna wewnątrz istniejących okien za pomocą Ctrl-a a następnie c. Będziesz miał coś takiego jak poniżej.

Na górze zrzutu ekranu widać ekran 3, co oznacza, że jesteśmy na trzecim ekranie. Na dole również widzimy ekran 3

8) Przełączanie między oknami ekranu

Gdy masz otwartych więcej niż jedno okno ekranu, aby przełączać się między każdym z nich, naciśnij Control-a, a następnie space lub numer powłoki. Na przykład, aby przełączyć się do powłoki numer 1, naciśnij Control-a następnie 1. Na przykład, będziemy poruszać się na pierwszym ekranie.

Góra i dół zrzutu ekranu pokazuje, że jesteśmy na pierwszym ekranie.

9) Podziel okna

Aby mieć globalny widok swojej pracy, możesz potrzebować podzielić swoje okna zamiast mieć wiele okien. Ctrl-a a następnie S lub | podziel swój ekran poziomo lub pionowo. Operację można powtarzać bez ograniczeń. Aby przesunąć kolejne okna, należy użyć Ctrl-a, a następnie Tab.

Gdy kursor znajduje się na dolnych oknach, można utworzyć nowe okno (Ctrl-a, a następnie c) lub wywołać istniejące okno (Ctrl-a, a następnie liczba).

Aby zamknąć podzielone okno, należy użyć Ctrl-a, a następnie X (należy pamiętać, że jest to znak wielkiej litery).

10) Ponowne połączenie z rozłączoną sesją ssh

Przy pierwszym zalogowaniu,

  • run screen aby rozpocząć sesję screen. Pojawia się kolejna powłoka, w której można uruchamiać polecenia.

# screen -S remote_session
  • Kiedy skończysz, odłącz sesję ekranową, a następnie wyloguj się do ssh

  • Możesz najpierw wylistować wszystkie sesje ekranowe
  • Ponownie połącz się z sesją ekranową i kontynuuj pracę
  • Połącz się z sesją ekranową i kontynuuj pracę
  • Podłącz się do sesji ekranowej i kontynuuj pracę
# screen -d -r remote_ression

Polecenie screen jest najczęściej używane dla sesji ssh, ponieważ pomaga kontynuować pracę po rozłączeniu bez utraty bieżących procesów w toku.

11) Przewijanie w górę w oknach screen

Ponieważ screen przejmuje zarządzanie twoimi zdalnymi programami, nie możesz używać funkcji przewijania emulatora terminala podczas uruchamiania screen. Musisz użyć poleceń Screen, aby uzyskać dostęp do bufora przewijania.

  • Użyj Ctrl-a a następnie escape
  • Naciśnij klawisze Up i Down klawisze strzałek lub klawisze PgUp i PgDn aby przewijać poprzednie dane wyjściowe.

Możesz zobaczyć gdzie jest mój kursor na zrzucie ekranu. Każdy wirtualny terminal ma swój własny bufor scrollback.

12) Zobacz właściciela każdej sesji ekranowej

Komendy screen -ls lub screen -list pokazują tylko twoje własne sesje ekranowe nawet dla roota. Z tego co wiem, jest to tak dobre jak sam screen.

Jeśli chcesz zobaczyć, które sesje screen zostały uruchomione przez których użytkowników zajrzyj do katalogu każdego użytkownika w /var/run/screen/.

13) Współdzielenie sesji ekranowej z jednego konta

Możesz mieć dwie osoby zalogowane na to samo konto z odległych lokalizacji. Mogą one w prosty sposób dzielić sesję ekranową (więc to co jedna wpisuje druga widzi i na odwrót). Aby to zrobić:

  • Utwórz nazwaną sesję ekranową:
# screen -d -m -S share_session
  • Podłącz się do sesji ekranowej w swoim oknie terminala
# screen -x share_session
  • Pozwól drugiej osobie (zalogowanej na to samo konto) (zalogowana na to samo konto) również dołączyła do sesji ekranowej
# screen -x share_session

Będziesz miał dokładnie to samo wyjście wyświetlane w drugiej lokalizacji. Wszystko, co pojawi się na twoim terminalu, pojawi się również na terminalu innego użytkownika.

14) Blokada sesji ekranowej

Możliwe jest zablokowanie sesji ekranowej bez blokowania normalnego użytkownika sesji. Oznacza to, że możesz opuścić swój komputer i być pewnym, że nikt nie podejdzie do nieautoryzowanych operacji. Aby to zrobić, użyj polecenia Ctrl-a followed by x (Zauważ, że jest to znak małej litery).

Screen used by root <root> on centos-01.Password:

15) Zakończenie sesji ekranowej

Po zakończeniu i chęci wyjścia z sesji ekranowej, możesz użyć polecenia Ctrl-a, po którym następuje k. Zostaniesz poproszony o potwierdzenie.

Możesz również użyć polecenia exit. Jeśli chcesz zachować proces w toku, możesz po prostu odłączyć sesję ekranu przed jej zakończeniem.

Zakończenie

Użytkownik ekranu może monitorować okno pod kątem aktywności lub bezczynności. Jest to świetne rozwiązanie, jeśli pobierasz duże pliki, kompilujesz lub czekasz na wyjście. W tym czasie, jeśli jest to potrzebne, możesz nawet rozpocząć jakiś proces z komputera używając polecenia screen i odłączyć go, gdy skończysz.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *