Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Jak używać komendy screen w Linuksie

By admin on 23 lutego, 2021

  • Dave McKay

    @TheGurkha

  • Marzec 27, 2020, 8:00am EDT
Linuksowy terminal na laptopie z nałożonymi za nim innymi sesjami terminalowymi.
fatmawati achmad zaenuri/

Dzięki linuksowemu poleceniu screen możesz przesuwać uruchomione aplikacje terminalowe na tło i wyciągać je do przodu, gdy chcesz je zobaczyć. Obsługuje również wyświetlanie na podzielonym ekranie i działa w połączeniach SSH, nawet po rozłączeniu i ponownym podłączeniu!

Czym jest polecenie screen?

Polecenie screen jest multiplekserem terminala, i jest absolutnie pełne opcji. Powiedzieć, że może zrobić wiele, jest największym niedopowiedzeniem. Strona man liczy ponad 4100 linii.

Następujące są najczęstsze przypadki użycia polecenia screen, które omówimy w dalszej części artykułu:

  • Standardową operacją jest utworzenie nowego okna z powłoką w nim, uruchomienie polecenia, a następnie zepchnięcie okna do tła (zwane „odłączaniem”). Kiedy chcesz zobaczyć jak radzi sobie twój proces, możesz ponownie wyciągnąć okno na pierwszy plan („ponowne dołączenie”) i użyć go ponownie. Jest to świetne rozwiązanie dla długich procesów, których nie chcesz przypadkowo zakończyć zamykając okno terminala.
  • Gdy już masz uruchomioną sesję screen, możesz tworzyć nowe okna i uruchamiać w nich inne procesy. Możesz łatwo przeskakiwać między oknami, by monitorować ich postęp. Możesz także podzielić okno terminala na pionowe lub poziome regiony i wyświetlać różne screen okna w jednym oknie.
  • Możesz połączyć się ze zdalną maszyną, rozpocząć sesję screen i uruchomić proces. Możesz odłączyć się od zdalnego hosta, połączyć się ponownie, a twój proces będzie nadal działał.
  • Możesz współdzielić sesję screen pomiędzy dwoma różnymi połączeniami SSH, dzięki czemu dwie osoby mogą zobaczyć to samo, w czasie rzeczywistym.

Instalacja screen

Aby zainstalować screen na ubuntu, użyj tej komendy:

sudo apt-get install screen

Komenda "sudo apt-get install screen" w oknie terminala."sudo apt-get install screen" command in a terminal window.

Aby zainstalować screen na Manjaro, użyj następującego polecenia:

sudo pacman -Sy screen

Polecenie "sudo pacman -Sy screen" w oknie terminala."sudo pacman -Sy screen" command in a terminal window.

W systemie Fedora wykonujemy następujące czynności:

sudo dnf install screen

Polecenie "sudo dnf install screen" w oknie terminala."sudo dnf install screen" command in a terminal window.

Rozpoczęcie pracy z screenem

Aby uruchomić screen, wystarczy wpisać jak poniżej i nacisnąć Enter:

screen

Komenda "screen" w oknie terminala."screen" command in a terminal window.

Reklama

Zobaczysz stronę z informacjami o licencji. Możesz nacisnąć Spację, aby przeczytać drugą stronę lub Enter, aby wrócić do wiersza poleceń.

Komenda "screen" informacje o licencji w oknie terminala."screen" command license information in a terminal window.

Zostałeś w wierszu poleceń i wydaje się, że nic wielkiego się nie stało. Jednak teraz uruchamiasz powłokę wewnątrz multipleksowanego emulatora terminala. Dlaczego jest to dobra rzecz? Cóż, rozpocznijmy proces, który zajmie nam dużo czasu. Pobierzemy kod źródłowy najnowszego jądra Linuksa i przekierujemy go do pliku o nazwie latest_kernel.zip.

W tym celu wpiszemy następujące polecenie:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

Komenda "curl latest_kernel.zip" w oknie terminala."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Zaczyna się pobieranie, a wyjście curl pokazuje nam postęp.

Wyjście z polecenia "curl latest_kernel.zip" w oknie terminala."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Reklama

Nie możemy pokazać obrazu kolejnego fragmentu, ponieważ jest to sekwencja klawiszy. Wpisujesz Ctrl+A, zwalniasz te klawisze, a następnie naciskasz d, aby odłączyć ekran.

Proces pobierania nadal trwa, ale okno pokazujące pobieranie jest usuwane. Powracasz do okna terminala, z którego uruchomiłeś sesję screen. Komunikat informuje Cię, że okno screen o nazwie 23167.pts-0.howtogeek zostało odłączone.

Potrzebujesz numeru z początku nazwy okna, aby je ponownie dołączyć. Jeśli go zapomnisz, zawsze możesz użyć opcji -ls (list), jak pokazano poniżej, aby uzyskać listę odłączonych okien:

screen -ls

Komenda "screen -ls" w oknie terminala."screen -ls" command in a terminal window.

Gdy będziesz gotowy, możesz użyć opcji -r (reattach) i numeru sesji, aby ponownie ją dołączyć, w następujący sposób:

screen -r 23167

Komenda "screen -3 23167" w oknie terminala."screen -3 23167" command in a terminal window.

Reklama

Okno, które pracowało w tle, jest teraz przywracane do okna terminala, tak jakby nigdy go nie opuściło.

Przywrócenie sesji ekranowej do okna terminala.

Jeśli jest to proces, który ma przebiegać do końca, to w końcu się zakończy. Jeśli jest to proces ciągły, w końcu będziesz chciał go zakończyć. Tak czy inaczej, kiedy proces się zakończy, możesz wpisać exit, aby wyjść z screen. Alternatywnie, możesz nacisnąć Ctrl+A, a następnie K, aby przymusowo zabić okno.

Podaj następującą komendę:

exit

Komenda "exit" w oknie terminala."exit" command in a terminal window.

Powrócisz do poprzedniego okna terminala, które nadal będzie pokazywać komendę, której użyłeś do ponownego dołączenia okna. Ponieważ zamknęliśmy nasze jedyne odłączone okno, otrzymujemy komunikat, że screen kończy pracę.

Komenda "screen" kończąca pracę w oknie terminala."screen" command terminating message in a terminal window.

RELATED: How to Use curl to Download Files From the Linux Command Line

Using Named screen Sessions

Możesz użyć opcji -S (session name), aby nazwać swoją screen sesję. Jeśli używasz pamiętnej nazwy zamiast numerycznej tożsamości sesji, wygodniej jest ponownie połączyć się z sesją. Aby nazwać naszą sesję „bigfile”, wpisujemy następujące polecenie:

screen -S bigfile

Komenda "screen -S bigfile" w oknie terminala."screen -S bigfile" command in a terminal window.

Reklama

Gdy screen uruchamiamy naszą sesję, widzimy puste okno z wierszem poleceń. Zamierzamy pobrać duży plik, więc za przykład może posłużyć nam długo trwający proces.

Wpisujemy następujące:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

Komenda "curl bigfile.zip" w oknie terminala."curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip" command in a terminal window.

Po rozpoczęciu pobierania wciskamy Ctrl+A, a następnie D, aby odłączyć sesję. Wpisujemy następujące polecenie, aby użyć opcji -ls (list) z screen, aby zobaczyć szczegóły naszej odłączonej sesji:

screen -ls

Komenda "screen -ls" w oknie terminala."screen -ls" command in a terminal window.

Za identyfikatorem numerycznym (23266) widzimy nazwę naszej sesji (bigfile). Wpisujemy następujące polecenie, łącznie z nazwą sesji, aby ją ponownie dołączyć:

screen -r bigfile

Komenda "screen -r bigfile" w oknie terminala."screen -r bigfile" command in a terminal window.

Jesteśmy ponownie podłączeni do naszego okna pobierania i widzimy, że długie pobieranie nadal trwa.

Wyjście pobierania Curl w ponownie dołączonej sesji screen w oknie terminala.

Reklama

Po zakończeniu pobierania wpisujemy exit , aby zamknąć okno sesji.

Używanie ekranu z wieloma oknami

Do tej pory używaliśmy screen , aby umieścić pojedynczy proces w tle w odłączonym oknie. Jednakże, screen potrafi zrobić znacznie więcej. Następnie uruchomimy kilka procesów, które pozwolą nam monitorować niektóre aspekty naszego komputera.

Wpisujemy następujące polecenie, aby uruchomić sesję ekranową o nazwie „monitor”:

screen -S monitor

Komenda "screen -S monitor" w oknie terminala."screen -S monitor" command in a terminal window.

W wierszu poleceń w naszej nowej sesji okienkowej uruchomimy dmesg i użyjemy opcji -H (human-readable) i -w (wait for new messages). Spowoduje to wyświetlenie komunikatów z bufora jądra; nowe komunikaty będą się pojawiać w miarę ich pojawiania się.

Wpisujemy następujące:

dmesg -H -w

Komenda "dmesg -H -w" w oknie terminala."dmesg -H -w" command in a terminal window.

Reklama

Wystawiamy istniejące komunikaty. Nie jesteśmy odsyłani do wiersza poleceń, ponieważ dmseg czeka na nowe wiadomości i będzie je wyświetlał w miarę ich napływania.

Wyjście "dmsesg" w oknie terminala."dmsesg" output in a terminal window.

RELATED: How to Use the dmesg Command on Linux

Chcemy uruchomić inną aplikację, więc potrzebujemy nowego okna screen. Wciskamy Ctrl+A, a następnie C, aby utworzyć nowe okno. Będziemy używać watch do wielokrotnego uruchamiania vmstat, dzięki czemu będziemy mieli często aktualizowany obraz wykorzystania pamięci wirtualnej na naszym komputerze.

W nowym wierszu poleceń wpisujemy następujące polecenia:

watch vmstat

Komenda "watch vmstat" w oknie terminala."watch vmstat" command in a terminal window.

Wyjście vmstat pojawia się i aktualizuje co dwie sekundy.

Wyjście "vmstat" w oknie terminala."vmstat" output in a terminal window.

Nasze dwa procesy są teraz uruchomione. Aby przeskakiwać pomiędzy oknami screen, naciskamy Ctrl+A, oraz numer okna. Pierwsze okno, które utworzyliśmy to okno zero (0), następne to okno 1, i tak dalej. Aby przejść do pierwszego okna (tego dmesg jednego), naciskamy Ctrl+A i 0.

Powrót do ekranu "dmesg" w oknie terminala."dmesg" screen in a terminal window.

Jeśli naciśniemy Ctrl+A i 1, to wrócimy do okna vmstat.

Powrót do ekranu "vmstat" w oknie terminala."vmstat" screen in a terminal window.

Reklama

To całkiem fajne! Możemy nacisnąć Ctrl+A, a następnie D, aby odłączyć się od tej sesji; możemy dołączyć ponownie później. Obie sesje będą nadal działały. Ponownie, aby przełączać się między oknami, naciskamy Ctrl+A i numer (0 lub 1) okna, na które chcemy się przełączyć.

Przejdźmy do następnego kroku i obejrzyjmy oba ekrany w jednym oknie. Gdy to zrobisz, rozciągniesz swoje okno terminala do rozmiaru, który czyni ten krok użytecznym. Nasze przykłady są ograniczone do rozmiaru naszych zrzutów ekranu, więc nasze okna będą wyglądały na nieco ciasne.

Aby to zrobić, wciskamy Ctrl+A, a następnie Shift+S (wymagane jest duże „S”).

Okno dzieli się na dwa „regiony.”

Sesja okna "screen" podzielona na dwa poziome regiony w oknie terminala."screen" window session split into two horizontal regions in a terminal window.

Górny region nadal wyświetla vmstat, a dolny jest pusty. Kursor jest podświetlony na poniższym zrzucie ekranu. Aby przenieść go do dolnego regionu, naciskamy Ctrl+A, a następnie Tab.

Sesja okna "screen" podzielona na dwa poziome regiony z kursorem w dolnym regionie w oknie terminala."screen" window session split into two horizontal regions with cursor in the bottom region in a terminal window.

Reklama

Kursor przenosi się do dolnego regionu, który tak naprawdę jest tylko pustą przestrzenią. Nie jest to powłoka, więc nie możemy w niej nic wpisać. Aby uzyskać użyteczne wyświetlanie, naciskamy Ctrl+A, a następnie naciskamy „0”, aby wyświetlić okno dmesg w tym regionie.

Sesja "screen" z poziomym dzielonym panelem pokazującym inny proces w każdym regionie w oknie terminala."screen" session with a horizontal split pane showing a different process in each region in a terminal window.

Daje nam to oba wyjścia na żywo w jednym dzielonym oknie. Jeśli naciśniemy Ctrl+A i D aby odłączyć okno, a następnie ponownie je dołączyć, stracimy widok podzielonego okna. Możemy go jednak przywrócić za pomocą następujących skrótów klawiaturowych:

  • Ctrl+A, S: Podziel okno poziomo.
  • Ctrl+A, Tab: Przejdź do dolnego regionu.
  • Ctrl+A, 0: Wyświetl zero okna w dolnym regionie.

Możemy pójść jeszcze o krok dalej. Podzielimy teraz dolne okno w pionie i dodamy trzeci proces do wyświetlania. Gdy kursor znajduje się w dolnym regionie, naciskamy Ctrl+A i C, aby utworzyć nowe okno z powłoką. Dolny region wyświetla nowe okno i daje nam znak zachęty do wykonania polecenia.

Sesja "screen" z poziomo podzielonym panelem pokazującym nowe okno w dolnym regionie w oknie terminala."screen" session with a horizontal split pane showing a new window in the lower region in a terminal window.

Następnie uruchamiamy komendę df w celu sprawdzenia wykorzystania systemu plików:

df

Sesja "screen" z poziomo podzielonym panelem i wpisanym "df" w dolnym regionie okna terminala."screen" session with a horizontal split pane, and "df" typed in the lower region in a terminal window.

Reklama

Gdy widzimy, że df działa, naciskamy Ctrl+A i znak pipe (|). Spowoduje to podzielenie dolnego regionu w pionie. Wciskamy Ctrl+A i Tab, aby przejść do nowego regionu. Następnie naciskamy Ctrl+A i 0, aby wyświetlić okno dmesg.

Sesja "screen" pokazująca trzy panele w oknie terminala."screen" session showing three panes in a terminal window.

Możesz również przechodzić z regionu do regionu i dodawać więcej pionowych lub poziomych podziałów. Oto kilka bardziej użytecznych kombinacji klawiszy:

  • Ctrl+A: Przeskakiwanie tam i z powrotem między bieżącym i poprzednim regionem.
  • Ctrl+A, Q: Zamykanie wszystkich regionów oprócz bieżącego.
  • Ctrl+A, X: Zamknij bieżący region.

Używanie ekranu przez SSH

Z pomocą screen, możesz rozpocząć sesję okna, odłączyć ją, aby nadal działała w tle, wylogować się lub wejść z powrotem i ponownie dołączyć sesję.

Wykonajmy połączenie SSH do naszego komputera z innego komputera za pomocą polecenia ssh. Musimy podać nazwę konta, z którym będziemy się łączyć oraz adres zdalnego komputera.

Dla naszego przykładu wpisujemy następujące:

ssh [email protected]

Komenda "ssh dave@192.168.4.30" w oknie terminala."ssh dave@192.168.4.30" command in a terminal window.

Reklama

Po uwierzytelnieniu się na zdalnym komputerze i zalogowaniu się, wpisujemy poniższe polecenie, aby rozpocząć sesję screen o nazwie „ssh-geek”:

screen -S ssh-geek

Komenda "screen -S ssh-geek" w oknie terminala."screen -S ssh-geek" command in a terminal window.

Dla celów demonstracyjnych uruchomimy top w oknie screen, ale można uruchomić dowolny długo trwający lub niekończący się proces.

Wpiszemy następujące:

top

Komenda "top" w oknie terminala."top" command in a terminal window.

Gdy top jest uruchomiony w oknie, naciskamy Ctrl+A, a następnie D, aby odłączyć okno.

Proces "top" uruchomiony w oknie "screen" w oknie terminala."top" process running in a "screen" window in a terminal window.

Powracamy do oryginalnego, zdalnego okna terminala.

Użytkownik powrócił do swojego oryginalnego okna terminala

Jeśli wpiszemy exit, jak pokazano poniżej, rozłącza to sesję SSH i wracamy do naszego lokalnego komputera:

exit

Komenda "exit" w oknie terminala."exit" command in a terminal window.

W celu ponownego nawiązania połączenia wpisujemy:

ssh [email protected]

Komenda "ssh dave@192.168.4.30" w oknie terminala."ssh dave@192.168.4.30" command in a terminal window.

Reklama

Po ponownym nawiązaniu połączenia i zalogowaniu się możemy wpisać poniższe polecenie, aby ponownie dołączyć sesję screen:

screen -r ssh-geek

Komenda "screen -r ssh-geek" w oknie terminala."screen -r ssh-geek" command in a terminal window.

Jesteśmy teraz ponownie połączeni z naszą wciąż działającą instancją top.

Proces "top" uruchomiony w oknie terminala."top" process running in a terminal window.

To jest świetne rozwiązanie, jeśli chcesz rozpocząć proces na jednej maszynie, a następnie kontynuować go tam, gdzie go przerwałeś na innej.

RELATED: How to Create and Install SSH Keys From the Linux Shell

Sharing a screen Session

Możesz także użyć sesji screen aby pozwolić dwóm osobom widzieć i współdziałać z tym samym oknem. Załóżmy, że ktoś z Fedorą na swoim komputerze chce się połączyć z naszym serwerem Ubuntu.

Wpisałby następujące polecenie:

ssh [email protected]

Komenda "ssh dave@192.168.4.30" w oknie terminala."ssh dave@192.168.4.30" command in a terminal window.

Po nawiązaniu połączenia, uruchamia sesję ekranową o nazwie „ssh-geek” używając opcji -S (nazwa sesji). Używa również opcji -d (detach) i -m (enforced creation), aby utworzyć nową screen sesję, która jest już odłączona.

Wpisuje następujące elementy:

screen -d -m -S ssh-geek

Komenda "screen -d -m -S ssh-geek" w oknie terminala."screen -d -m -S ssh-geek" command in a terminal window.

Reklama

Wpisuje poniższe, korzystając z opcji -X (tryb wieloekranowy) w celu dołączenia sesji:

screen -X ssh-geek

Komenda "screen -X ssh-geek" w oknie terminala."screen -X ssh-geek" command in a terminal window.

Na komputerze Manjaro inna osoba łączy się z komputerem Ubuntu za pomocą tych samych danych uwierzytelniających, jak pokazano poniżej:

ssh [email protected]

Komenda "ssh dave@192.168.4.1" w oknie terminala."ssh dave@192.168.4.1" command in a terminal window.

Po nawiązaniu połączenia wpisuje komendę screen i używa opcji -X (tryb wieloekranowy), aby dołączyć do sesji w tym samym oknie, w następujący sposób:

screen -X ssh-geek

Komenda "screen -X ssh-geek" w oknie terminala."screen -X ssh-geek" command in a terminal window.

Teraz, cokolwiek wpisze jedna z osób, druga zobaczy. Na przykład, gdy jedna osoba wyda polecenie date, obie zobaczą je w trakcie wpisywania, a także jego wyjście.

Komenda "date" w oknie terminala."date" command in a terminal window.

Wyjście z polecenia "date" w oknie terminala."date" command in a terminal window.

Reklama

Obydwie osoby dzielą teraz sesję screen, która jest uruchomiona na zdalnym komputerze Ubuntu.

Jak na oprogramowanie, które po raz pierwszy ujrzało światło dzienne w 1987 roku, screen wciąż daje niezłą porcję produktywności. Zapoznanie się z nim będzie dobrze spędzonym czasem!

POWIĄZANE: 37 Important Linux Commands You Should Know

Dave McKay
Dave McKay po raz pierwszy używał komputerów, gdy modna była taśma dziurkowana, i od tego czasu zajmuje się programowaniem. Po ponad 30 latach pracy w branży IT, obecnie jest pełnoetatowym dziennikarzem technologicznym. W swojej karierze pracował jako niezależny programista, kierownik międzynarodowego zespołu programistów, kierownik projektu usług informatycznych, a ostatnio jako inspektor ochrony danych. Dave jest ewangelistą Linuksa i zwolennikiem open source.Read Full Bio ”

Zobacz wpisy

Why Are My Supplements Making Me Nauseous?
Co to jest choroba wysokościowa?

Dodaj komentarz Anuluj pisanie odpowiedzi

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

Najnowsze wpisy

  • Firebush (Polski)
  • Prognoza stawek CD na 2021 rok: Stopy procentowe prawdopodobnie pozostaną na niskim poziomie, ale mogą wzrosnąć w dalszej części roku
  • Jak ustrukturyzować dokumentację systemu zarządzania jakością
  • Zdrowe Gry i Zajęcia dla Dzieci | UIC Online Informatics
  • Wheat Ales (American) (Polski)
  • Korzyści z karmienia piersią po roku
  • Czy bezpiecznie jest wrzucać fusy z kawy do zlewu | Atomic Plumbing
  • Cool-Down After Your Workout (Polski)
  • Nasza praca
  • Najlepsza ręczna maszyna do szycia do kupienia: 2020

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org

Archiwa

  • Marzec 2021
  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com