Kompletny przewodnik po poleceniach GNU Screen w Linux
GNU Screen to multiplekser terminalowy, który pozwala tworzyć, zarządzać i utrwalać wiele sesji powłoki w jednym oknie terminala. Po odłączeniu się od sesji Screen, każdy uruchomiony w niej proces kontynuuje działanie — przeżywając rozłączenia SSH, przerwy w sieci i zamknięcia terminala — i pozostaje w pełni dostępny w momencie ponownego połączenia.
Dla każdego, kto zarządza zdalnymi serwerami przez SSH, ta jedna funkcja eliminuje całą klasę ryzyka operacyjnego: zerwane połączenie nie zabija już uruchomionej migracji bazy danych, wielogodzinnego zadania kompilacji ani procesu monitorowania logów na żywo.
Dlaczego GNU Screen pozostaje aktualny we współczesnej administracji Linux
Narzędzia takie jak tmux zyskały popularność, ale Screen jest dostarczany jako domyślny lub niemal domyślny pakiet praktycznie w każdej korporacyjnej dystrybucji Linux i minimalnym obrazie serwera. Gdy łączysz się przez SSH z maszyną bare-metal lub świeżo uruchomionym instancją VPS Hosting, Screen jest prawie zawsze dostępny bez żadnej dodatkowej instalacji. Jego niskie zużycie pamięci i zgodność z POSIX czynią go pragmatycznym wyborem w środowiskach o ograniczonych zasobach lub z restrykcjami.
Podstawowe możliwości w skrócie:
- Trwałość sesji: Procesy przeżywają rozłączenie terminala, przekroczenie limitu czasu SSH i awarie po stronie klienta
- Multipleksowanie okien: Wiele niezależnych okien powłoki w ramach jednej sesji
- Współdzielenie sesji: Dwóch użytkowników może jednocześnie podłączyć się do tej samej sesji w celu wspólnego debugowania
- Dostęp do konsoli szeregowej: Screen może łączyć się bezpośrednio z urządzeniami `/dev/ttyS*` w celu zarządzania serwerem poza pasmem
- Skryptowy start: Plik konfiguracyjny `.screenrc` umożliwia w pełni zautomatyzowane środowiska wielookienne przy uruchomieniu
GNU Screen vs. tmux: Wybór odpowiedniego multipleksera
Oba narzędzia rozwiązują ten sam podstawowy problem, ale z różnymi filozofiami projektowania. Poniższa tabela przedstawia różnice istotne w środowiskach produkcyjnych.
| Funkcja | GNU Screen | tmux |
|---|
| — | — | — |
|---|
| Domyślna dostępność | Preinstalowany w większości dystrybucji | Wymaga jawnej instalacji |
|---|
| Plik konfiguracyjny | `~/.screenrc` | `~/.tmux.conf` |
|---|
| Podział paneli (poziomy/pionowy) | Ograniczony (tylko pionowy przez regiony) | Pełny, elastyczny podział paneli |
|---|
| Współdzielenie sesji | Natywne wielokrotne podłączanie | Natywne wielokrotne podłączanie |
|---|
| Skryptowanie / automatyzacja | Wstrzykiwanie poleceń `screen -X` | `tmux send-keys`, rozbudowane API |
|---|
| Zużycie pamięci | Bardzo niskie | Niskie |
|---|
| Obsługa urządzeń szeregowych | Tak (`screen /dev/ttyS0`) | Nie |
|---|
| Personalizacja paska stanu | Umiarkowana (hardstatus) | Bardzo elastyczna |
|---|
| Tryb kopiowania | Styl vi | Styl vi lub emacs |
|---|
| Ekosystem wtyczek | Brak | Aktywny (TPM) |
|---|
| Idealny przypadek użycia | Minimalne serwery, konsole szeregowe, starsze środowiska | Stacje robocze deweloperów, złożone układy |
|---|
Praktyczne wskazówki: Na bezgłowym Serwerze Dedykowanym obsługującym długoterminowe zadania w tle, prostota i powszechna dostępność Screen czynią go wyborem o mniejszym tarciu. Dla dewelopera potrzebującego podzielonych paneli i rozbudowanego paska stanu, wygrywa tmux.
Instalacja GNU Screen
Screen jest preinstalowany w większości dystrybucji. Sprawdź za pomocą:
“`bash
screen –version
“`
Jeśli go nie ma, zainstaluj go przy użyciu odpowiedniego menedżera pakietów:
Debian / Ubuntu:
“`bash
sudo apt-get update && sudo apt-get install screen
“`
CentOS / RHEL 7:
“`bash
sudo yum install screen
“`
CentOS Stream / RHEL 8+ / AlmaLinux / Rocky Linux:
“`bash
sudo dnf install screen
“`
Fedora:
“`bash
sudo dnf install screen
“`
Arch Linux:
“`bash
sudo pacman -S screen
“`
Alpine Linux (powszechny w kontenerach):
“`bash
apk add screen
“`
Po instalacji nie jest wymagany żaden demon ani usługa. Screen działa wyłącznie jako proces przestrzeni użytkownika.
Uruchamianie sesji Screen
Podstawowa sesja
“`bash
screen
“`
Przenosi cię do nowej sesji ze standardową powłoką. Interfejs jest nie do odróżnienia od normalnego terminala, dopóki nie użyjesz prefiksu poleceń Screen.
Nazwana sesja (zalecane)
“`bash
screen -S session_name
“`
Zawsze nadawaj nazwy sesjom w środowisku produkcyjnym. Nienazwane sesje są identyfikowane wyłącznie przez PID, co sprawia, że ponowne podłączanie jest podatne na błędy, gdy działa wiele sesji.
Wskazówka dotycząca konwencji nazewnictwa: Używaj opisowych nazw odzwierciedlających obciążenie — `screen -S db-migration`, `screen -S log-monitor`, `screen -S build-php82`. Procentuje to, gdy wracasz do serwera po kilku godzinach nieobecności.
Uruchamianie sesji i natychmiastowe wykonanie polecenia
“`bash
screen -S backup-job bash -c 'rsync -avz /data/ user@remote:/backup/ && echo DONE'
“`
Sesja trwa nawet po zakończeniu polecenia, umożliwiając późniejsze sprawdzenie wyników.
Uruchamianie sesji w trybie odłączonym
“`bash
screen -dmS headless-job ./long_running_script.sh
“`
Flagi `-dm` tworzą sesję i natychmiast ją odłączają. Jest to właściwy wzorzec do uruchamiania zadań w tle z cron lub skryptów wdrożeniowych — proces działa wewnątrz nazwanej, możliwej do odzyskania sesji Screen bez konieczności posiadania interaktywnego terminala.
Prefiks poleceń: Zrozumienie Ctrl+A
Każdy skrót klawiaturowy Screen zaczyna się od sekwencji ucieczki `Ctrl+A`. To naciśnięcie klawisza informuje Screen, że następny znak jest poleceniem, a nie wejściem dla uruchomionego programu. Zrozumienie tego modelu jest niezbędne przed zapamiętaniem poszczególnych skrótów.
Jeśli uruchomisz program wewnątrz Screen, który sam używa `Ctrl+A` (na przykład niektóre edytory tekstu lub biblioteka `readline`), możesz wysłać dosłowny `Ctrl+A` do wewnętrznego programu, naciskając `Ctrl+A` dwukrotnie (`Ctrl+A, Ctrl+A`).
Odłączanie i ponowne podłączanie sesji
Odłączanie od działającej sesji
“`
Ctrl+A, D
“`
Sesja kontynuuje działanie w tle. Wracasz do powłoki nadrzędnej. Żaden proces wewnątrz sesji nie jest przerywany.
Wyświetlanie wszystkich sesji
“`bash
screen -ls
“`
Przykładowe wyjście:
“`
There are screens on:
14231.db-migration (Detached)
14089.log-monitor (Attached)
13901.build-php82 (Detached)
3 Sockets in /var/run/screen/S-deploy.
“`
Status `Attached` oznacza, że inny terminal jest aktualnie podłączony do tej sesji. `Detached` oznacza, że sesja działa, ale żaden terminal nie jest podłączony.
Ponowne podłączanie do konkretnej sesji
“`bash
screen -r db-migration
“`
Lub przez PID:
“`bash
screen -r 14231
“`
Wymuszone podłączenie do już podłączonej sesji
Jeśli sesja pokazuje `Attached`, ale musisz ją przejąć (na przykład po tym, jak nieaktywne połączenie SSH pozostawiło ją zablokowaną):
“`bash
screen -d -r log-monitor
“`
Flaga `-d` wymusza odłączenie drugiego połączenia przed ponownym podłączeniem ciebie. Jest to kluczowa technika odzyskiwania, gdy poprzednia sesja SSH zakończyła się bez czystego odłączenia.
Wielokrotne podłączanie: Dwóch użytkowników w tej samej sesji
“`bash
screen -x session_name
“`
Oba terminale widzą identyczne wyjście w czasie rzeczywistym. Jest to nieocenione przy wspólnym debugowaniu lub prowadzonych przez serwer prezentacjach z kolegą — obie strony obserwują i mogą wchodzić w interakcję z tą samą powłoką.
Zarządzanie oknami w sesji
Jedna sesja Screen może zawierać nieograniczoną liczbę okien. Każde okno jest niezależną powłoką (lub procesem).
Tworzenie nowego okna
“`
Ctrl+A, C
“`
Nawigacja między oknami
| Skrót | Akcja |
|---|
| — | — |
|---|
| `Ctrl+A, N` | Następne okno |
|---|
| `Ctrl+A, P` | Poprzednie okno |
|---|
| `Ctrl+A, 0–9` | Przejdź bezpośrednio do okna według numeru |
|---|
| `Ctrl+A, "` | Interaktywna lista wszystkich okien |
|---|
| `Ctrl+A, '` | Monit o wprowadzenie numeru lub nazwy okna |
|---|
Zmiana nazwy okna
“`
Ctrl+A, A
“`
Wpisz nową nazwę i naciśnij Enter. Znaczące nazwy okien są wyświetlane na pasku hardstatus, co znacznie przyspiesza nawigację w sesjach z wieloma oknami.
Zamykanie okna
Wpisz `exit` lub naciśnij `Ctrl+D` w powłoce okna. Gdy ostatnie okno w sesji zostanie zamknięte, sesja kończy się.
Podział ekranu na regiony
Screen obsługuje podział terminala na wiele widocznych regionów, z których każdy wyświetla jednocześnie inne okno.
Podział poziomy (góra/dół)
“`
Ctrl+A, S
“`
Podział pionowy (lewo/prawo)
“`
Ctrl+A, |
“`
Uwaga: Podział pionowy wymaga Screen 4.1.0 lub nowszego.
Przechodzenie między regionami
“`
Ctrl+A, Tab
“`
Przypisywanie okna do regionu
Po przeniesieniu fokusu do regionu, użyj `Ctrl+A, "`, aby wybrać okno do wyświetlenia w tym miejscu.
Usuwanie regionu
“`
Ctrl+A, X (remove current region)
Ctrl+A, Q (remove all regions except current)
“`
Ważne rozróżnienie: Usunięcie regionu nie zamyka działającego w nim okna. Okno nadal działa; po prostu przestajesz wyświetlać je w tym podziale.
Kopiowanie i wklejanie (tryb przewijania)
Screen utrzymuje bufor przewijania dla każdego okna. Aby uzyskać do niego dostęp:
“`
Ctrl+A, [
“`
Powoduje to wejście w tryb kopiowania. Nawigacja używa klawiszy w stylu vi:
- `h`, `j`, `k`, `l` — przesuwanie kursora
- `Ctrl+F` / `Ctrl+B` — strona do przodu / do tyłu
- `/` — szukaj do przodu
- `?` — szukaj do tyłu
- `Space` — zaznacz początek zaznaczenia
- `Space` (ponownie) — zaznacz koniec i skopiuj do bufora
Aby wkleić skopiowany tekst:
“`
Ctrl+A, ]
“`
Domyślny bufor przewijania wynosi 100 linii. Do monitorowania logów serwera zwiększ go znacznie w `.screenrc` (opisane poniżej).
Blokowanie sesji Screen
“`
Ctrl+A, X
“`
Sesja blokuje się natychmiast i przed udzieleniem dostępu prosi o podanie hasła użytkownika Unix. Używaj tego, gdy odchodzisz od terminala podłączonego do wrażliwego serwera — jest to szybsze niż zamykanie połączenia SSH i ponowne podłączanie.
Wysyłanie poleceń do sesji bez podłączania
Flaga `-X` pozwala wstrzykiwać polecenia Screen do działającej sesji z zewnątrz:
“`bash
screen -S db-migration -X stuff "tail -f /var/log/mysql/error.logn"
“`
Polecenie `stuff` wysyła naciśnięcia klawiszy do aktywnego okna nazwanej sesji. `n` symuluje naciśnięcie Enter. Technika ta jest używana w skryptach automatyzacji wdrożeń do interakcji z długo działającymi sesjami Screen bez konieczności ręcznego podłączania.
Konfigurowanie Screen za pomocą .screenrc
Plik `~/.screenrc` jest odczytywany przy uruchomieniu i kontroluje domyślne zachowanie Screen. Dobrze skonstruowany `.screenrc` przekształca Screen z podstawowego multipleksera w naprawdę ergonomiczne środowisko.
Utwórz lub edytuj go:
“`bash
nano ~/.screenrc
“`
Zalecana produkcyjna konfiguracja .screenrc
“`bash
Disable the startup message
startup_message off
Set scrollback buffer to 10,000 lines (critical for log monitoring)
defscrollback 10000
Enable UTF-8
defutf8 on
Set default shell
shell -$SHELL
Visual bell instead of audible
vbell on
Hardstatus bar: shows hostname, window list, and current time
hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
Bind F2 to create a new window
bindkey -k k2 screen
Change escape key to Ctrl+B (useful if Ctrl+A conflicts with other tools)
escape ^Bb
Auto-detach on hangup signal (critical for SSH session drops)
autodetach on
Disable flow control (prevents Ctrl+S from freezing the terminal)
defflow off
“`
Dyrektywa `autodetach on` jest niezbędna przy użyciu SSH. Bez niej, jeśli połączenie SSH zostanie nieoczekiwanie zerwane (zamiast naciśnięcia `Ctrl+A, D`), Screen może zakończyć sesję zamiast ją odłączyć. Dzięki `autodetach on`, sygnał SIGHUP (wysyłany przy rozłączeniu SSH) wyzwala czyste odłączenie zamiast zakończenia sesji.
`defflow off` zapobiega częstej frustracji przypadkowego naciśnięcia `Ctrl+S` i pozornego zamrożenia terminala. Wielu administratorów traci minuty na rozwiązywanie problemu „zamrożonego” terminala, który po prostu jest w pauzie sterowania przepływem XON/XOFF.
Praktyczne przypadki użycia w środowisku produkcyjnym
Bezpieczne uruchamianie migracji bazy danych
“`bash
screen -S db-migrate
Inside the session:
php artisan migrate –force 2>&1 | tee /var/log/migration-$(date +%F).log
Detach: Ctrl+A, D
Reattach later to check progress:
screen -r db-migrate
“`
Jeśli połączenie SSH zostanie zerwane w trakcie migracji, proces kontynuuje działanie. Podłączasz się ponownie i zastajasz go albo nadal działającego, albo zakończonego z pełnym wyjściem zachowanym w logu i buforze przewijania.
Jednoczesne monitorowanie wielu plików logów
“`bash
screen -S monitoring
Window 0: nginx access log
tail -f /var/log/nginx/access.log
Ctrl+A, C — new window
Window 1: application error log
tail -f /var/log/app/error.log
Ctrl+A, C — new window
Window 2: system messages
journalctl -f
“`
Nawiguj między oknami za pomocą `Ctrl+A, "`, aby zobaczyć, który log generuje aktywność.
Zautomatyzowany skrypt wdrożeniowy ze Screen
“`bash
#!/bin/bash
screen -dmS deploy bash -c '
git pull origin main &&
composer install –no-dev &&
php artisan config:cache &&
systemctl reload php8.2-fpm &&
echo "Deployment complete at $(date)" >> /var/log/deploy.log
'
echo "Deployment started in background screen session 'deploy'"
echo "Monitor with: screen -r deploy"
“`
Ten wzorzec jest szczególnie przydatny na VPS z cPanel, gdzie możesz zarządzać wieloma wdrożeniami aplikacji z jednej powłoki administracyjnej.
Dostęp do konsoli szeregowej
“`bash
screen /dev/ttyS0 115200
“`
Screen pełni podwójną rolę emulatora terminala szeregowego. Jest to standardowa technika dostępu do konsoli fizycznego serwera, przełącznika sieciowego lub urządzenia wbudowanego przez połączenie szeregowe — bez konieczności używania minicom lub picocom.
Typowe pułapki i jak ich unikać
Zagnieżdżone sesje Screen: Jeśli łączysz się przez SSH z sesji Screen na Maszynie A do Maszyny B i uruchamiasz tam Screen, masz teraz dwie warstwy obsługi `Ctrl+A`. Wewnętrzna sesja Screen przechwytuje `Ctrl+A` zanim zewnętrzna go zobaczy. Aby wysłać `Ctrl+A` do zewnętrznej sesji, naciśnij `Ctrl+A, Ctrl+A`. Aby uniknąć zamieszania, zmień klawisz ucieczki wewnętrznej sesji w jej `.screenrc` używając `escape ^Bb`.
Martwe sesje nieoczyszczające się: Jeśli Screen ulegnie awarii lub host uruchomi się ponownie w sposób nieczysty, pliki gniazd mogą pozostać w `/var/run/screen/` lub `~/.screen/`, pokazując sesje jako `Dead`. Wyczyść je za pomocą:
“`bash
screen -wipe
“`
Sesja należąca do roota vs. użytkownika: Sesja Screen uruchomiona jako root nie może być ponownie podłączona przez użytkownika niebędącego rootem i odwrotnie. Jeśli wykonasz `sudo su` wewnątrz sesji Screen, a następnie ją odłączysz, podłącz się ponownie jako root lub przez `sudo screen -r`.
Niezgodność zmiennej `TERM`: Niektóre aplikacje wewnątrz Screen zachowują się nieprawidłowo, ponieważ `TERM` jest ustawiony na `screen` lub `screen-256color` zamiast `xterm-256color`. Jeśli aplikacja TUI renderuje się nieprawidłowo, sprawdź za pomocą `echo $TERM` i w razie potrzeby nadpisz w `.screenrc` za pomocą `term xterm-256color`.
Wyczerpanie bufora przewijania: Domyślny bufor przewijania wynoszący 100 linii jest niewystarczający do poważnego monitorowania logów. Zawsze ustawiaj `defscrollback 10000` lub wyżej w `.screenrc` na serwerach używanych do aktywnej administracji.
Szybki przewodnik: Podstawowe polecenia Screen
| Akcja | Polecenie / Skrót |
|---|
| — | — |
|---|
| Uruchom nową sesję | `screen` |
|---|
| Uruchom nazwaną sesję | `screen -S name` |
|---|
| Uruchom odłączoną sesję | `screen -dmS name` |
|---|
| Wyświetl sesje | `screen -ls` |
|---|
| Podłącz ponownie według nazwy | `screen -r name` |
|---|
| Wymuś ponowne podłączenie | `screen -d -r name` |
|---|
| Wielokrotne podłączenie | `screen -x name` |
|---|
| Odłącz | `Ctrl+A, D` |
|---|
| Nowe okno | `Ctrl+A, C` |
|---|
| Następne okno | `Ctrl+A, N` |
|---|
| Poprzednie okno | `Ctrl+A, P` |
|---|
| Lista okien | `Ctrl+A, "` |
|---|
| Zmień nazwę okna | `Ctrl+A, A` |
|---|
| Podział poziomy | `Ctrl+A, S` |
|---|
| Podział pionowy | `Ctrl+A, | ` |
|---|
| Przejdź między regionami | `Ctrl+A, Tab` |
|---|
| Wejdź w tryb kopiowania/przewijania | `Ctrl+A, [` |
|---|
| Wklej bufor | `Ctrl+A, ]` |
|---|
| Zablokuj sesję | `Ctrl+A, X` |
|---|
| Zamknij bieżące okno | `Ctrl+A, K` |
|---|
| Zakończ całą sesję | `Ctrl+A, ` |
|---|
| Wyślij polecenie do sesji | `screen -S name -X stuff "cmdn"` |
|---|
| Wyczyść martwe sesje | `screen -wipe` |
|---|
Kontekst wdrożenia: Screen w zarządzanych środowiskach hostingowych
Screen działa na poziomie powłoki, co czyni go kompatybilnym z każdym środowiskiem Linux, gdzie masz dostęp przez SSH. Obejmuje to serwery bare-metal, Serwery Dedykowane i standardowe instancje VPS Hosting. Nie jest dostępny w środowiskach hostingu współdzielonego, gdzie dostęp przez SSH jest ograniczony lub niedostępny.
W przypadku obciążeń wymagających trwałego przetwarzania w tle — takich jak wnioskowanie modeli z akceleracją GPU, wstępne przetwarzanie dużych zbiorów danych lub długotrwałe zadania wsadowe — połączenie Screen ze środowiskiem GPU Hosting zapewnia zarówno zasoby obliczeniowe, jak i trwałość sesji niezbędną do niezawodnego zarządzania wielogodzinnymi zadaniami.
Jeśli twoja infrastruktura obejmuje usługi dostępne przez internet obok przetwarzania w tle, połączenie zadań backendowych zarządzanych przez Screen z odpowiednio zabezpieczonymi Certyfikatami SSL na publicznych punktach końcowych zapewnia, że cały stos — zarówno widoczna warstwa aplikacji, jak i administracyjny backend — działa z odpowiednimi kontrolami bezpieczeństwa.
Macierz decyzyjna: Kiedy używać Screen
Używaj Screen, gdy:
- Potrzebujesz trwałości sesji na serwerze, gdzie dostępny jest tylko Screen
- Uzyskujesz dostęp do konsoli szeregowej lub urządzenia wbudowanego
- Uruchamiasz jeden długotrwały proces i nie potrzebujesz podzielonych paneli
- Pracujesz na minimalnym systemie opartym na Alpine lub BusyBox
- Musisz współdzielić sesję z innym administratorem w czasie rzeczywistym
Rozważ zamiast tego tmux, gdy:
- Potrzebujesz elastycznego poziomego i pionowego podziału paneli
- Chcesz ekosystemu wtyczek do rozszerzeń paska stanu
- Budujesz środowisko stacji roboczej dewelopera ze złożonymi układami
- Twój zespół ustandaryzował zarządzanie konfiguracją tmux
Nie używaj żadnego z nich (zamiast tego użyj systemd lub supervisor), gdy:
- Celem jest wyłącznie uruchomienie usługi w tle, która powinna przeżyć restarty
- Nie potrzebujesz interaktywnego dostępu do działającego procesu
- Proces powinien automatycznie restartować się po awarii
Techniczna lista kontrolna kluczowych wniosków
Przed poleganiem na Screen w środowisku produkcyjnym zweryfikuj następujące kwestie:
- `autodetach on` jest obecny w `~/.screenrc` — bez tego zerwania SSH mogą zabijać sesje
- `defscrollback` jest ustawiony na co najmniej 5000 linii dla obciążeń z dużą ilością logów
- `defflow off` jest ustawiony, aby zapobiec przypadkowym zamrożeniom `Ctrl+S`
- Wszystkie długo działające sesje są nazwane (`-S flag`) — nigdy nie polegaj wyłącznie na identyfikacji przez PID
- Znasz polecenie odzyskiwania `screen -d -r` dla nieaktywnych podłączonych sesji
- Martwe gniazda sesji są okresowo czyszczone za pomocą `screen -wipe`
- Jeśli działasz jako wielu użytkowników, rozumiesz granicę własności sesji root/użytkownik
- Zmienna `TERM` jest weryfikowana, jeśli aplikacje TUI renderują się nieprawidłowo wewnątrz Screen
- W przypadku w pełni zautomatyzowanych zadań w tle używane jest `screen -dmS` zamiast `nohup` lub zwykłego `&`, co daje odzyskiwalną, możliwą do inspekcji sesję
FAQ
Czy GNU Screen przeżywa restart serwera?
Nie. Sesje Screen są przechowywane w pamięci jako procesy. Pełny restart serwera kończy wszystkie sesje Screen i ich procesy potomne. W przypadku procesów, które muszą przeżyć restarty, używaj jednostek systemd lub nadzorcy procesów, takiego jak Supervisor. Screen jest właściwym narzędziem do interaktywnej trwałości przez rozłączenia, a nie przez restarty.
Jaka jest różnica między `screen -r` a `screen -x`?
`screen -r` ponownie podłącza się do odłączonej sesji — kończy się niepowodzeniem, jeśli sesja jest już podłączona gdzie indziej. `screen -x` podłącza się do sesji niezależnie od jej aktualnego stanu podłączenia, umożliwiając dwóm terminalom współdzielenie tej samej sesji jednocześnie. Używaj `-x` do wspólnego debugowania; używaj `-r` do standardowego ponownego podłączania.
Jak przewijać w górę wewnątrz okna Screen?
Wejdź w tryb kopiowania za pomocą `Ctrl+A, [`, a następnie używaj klawiszy strzałek, `Page Up`/`Page Down` lub nawigacji w stylu vi (`Ctrl+F`, `Ctrl+B`). Naciśnij `Escape` lub `q`, aby wyjść z trybu kopiowania. Upewnij się, że `defscrollback` w `.screenrc` jest ustawiony wystarczająco wysoko, aby zachować potrzebną historię.
Czy Screen może być używany bez uprawnień roota?
Tak. Screen działa całkowicie jako wywołujący użytkownik. Do tworzenia, podłączania lub zarządzania sesjami nie są wymagane uprawnienia roota. Pliki gniazd są przechowywane w katalogu per-użytkownik (zazwyczaj `/var/run/screen/S-username/`). Jedynym wyjątkiem jest sytuacja, gdy Screen nie jest zainstalowany — instalacja wymaga dostępu do menedżera pakietów, który zazwyczaj wymaga roota lub sudo.
Dlaczego moja sesja Screen pokazuje „Attached”, gdy nikt nie jest podłączony?
Dzieje się tak zazwyczaj, gdy połączenie SSH zostało zerwane bez wysłania czystego sygnału SIGHUP — na przykład z powodu przekroczenia limitu czasu sieci zamiast jawnego wylogowania. Sesja zachowuje stan `Attached`, ponieważ Screen nigdy nie otrzymał sygnału rozłączenia. Użyj `screen -d -r session_name`, aby wymusić odłączenie połączenia-widma i ponownie podłączyć się czysto.
