Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Screen

Wstęp

Linuksowy program wiersza poleceń screen jest pełnoekranowym managerem okien, który multipleksuje jeden terminal pomiędzy kilka procesów (zwykle interaktywnych powłok).

Dzięki temu możesz np. nawiązując tylko jedno połączenie SSH ze zdalnym komputerem uruchomić na nim kilka interaktywnych powłok i przełączać się pomiędzy nimi.
Co więcej, możesz odłączyć się (ang. detach) od sesji screena nie kończąc sesji shella (i uruchomionych w nich procesów) i zamknąć połączenie SSH, aby po ponownym nawiązaniu połączenia SSH powrócić do sesji powłok jakbyś nigdy ich nie opuszczał.

Niniejszy artykuł wymienia najciekawsze moim zdaniem aspekty screena i jest krótkim streszczeniem/ściągą z ponad 100-stronicowego manuala, wymienionego na końcu w bibliografii.

screen
uruchamia sesję screena
screen -r [nazwa]
podłącza się do odłączonej sesji screen’a (jeśli jest więcej sesji, musisz podać nazwę jednej z nich, lub jej fragment)

Skróty klawiaturowe

Każde polecenie screen’a rozpoczyna się od kombinacji klawiszy C-a (można to zmienić definiując własny skrót).

C-a ?
wyświetla listę wszystkich dostępnych poleceń
C-a c
tworzy nowe okno (sesję powłoki) w ramach bieżącej sesji screena; okna są numerowane od 0 do 9
C-a k
zamyka bieżące okno
C-a d
odłącza się od bieżącej sesji screena
C-a
zamyka wszystkie okna i kończy sesję screena
C-a „
wyświetla listę wszystkich okien i pozwala na wybór okna
C-a 0..9
przełącza na okno o podanym numerze
C-a C-a
przełącza na poprzednio wyświetlane okno
C-a A
pozwala zmienić tytuł bieżącego okna
C-a h
zapisuje zawartość bieżącego okna w pliku hardcopy.n (można później podejrzeć za pomocą less -r hardcopy.n)
C-a H
włącza/wyłącza logowanie bieżącego okna do pliku screenlog.n (można później podejrzeć za pomocą less -r screenlog.n); jeśli plik istnieje, dopisuje na końcu
C-a m
przywraca ostatnio wyświetlany komunikat wiersza statusu (domyślnie komunikat znika po 5 sekundach lub naciśnięciu dowolnego klawisza)

Polecenia

Każde polecenie screen’a ma swoją pełną nazwę i może być wprowadzone po wykonaniu sekwencji C-a :. Polecenia mogą mieć parametry (w tym opcjonalne) i zwykle są używane w pliku startowym ~/.screenrc (patrz niżej). Niektóre polecenia (np. wymienione w poprzednim punkcie) mają swoje bindowanie do skrótów klawiaturowych.

Przykłady poleceń:

password
pozwala zabezpieczyć sesję screena hasłem
logtstamp on/off
automatycznie dodaje timestampy do pliku z logowaną zawartością (patrz polecenie C-a h) po upływie 2 minut bezczynności

Przewijanie ekranu

C-a [
przejście w tryb kopiowania/przewijania

W tym trybie można przewijać zawartość okna klawiszami strzałek, działają z grubsza polecenia Vi takie jak g (skok na początek bufora), G (skok na koniec bufora), / (wyszukiwanie w zawartości bufora). Wyjście z trybu następuje np. poprzez C-c.

Można zaznaczać tekst który zostanie skopiowany do schowka po wyjściu z trybu (spacja służy do ustawiania początku i końca zaznaczenia, można zaznaczać prostokątne bloki) – ale chyba jest to średnio przydatne w dzisiejszych czasach, bo przecież mamy myszki.

Praca grupowa (multiuser mode)

Możesz współdzielić sesję screena z kolegami aby pracować zespołowo.

Jeśli udostępnisz koledze konto UNIXowe na którym postawiłeś sesję screena, to wystarczy że kolega zaloguje się (albo np. zaSSHuje) na to konto i wykona polecenie screen -x.

Domyślnie sesja screena nie jest dostępna z innych kont UNIXowych. Aby to zmienić, trzeba wykonać w screenie polecenie multiuser on i wskazać jacy użytkownicy będą mogli wykonywać jakie operacje na których oknach screena za pomocą polecenia aclchg, np. aclchg jasio,ania +rwx "0,1?" (Jasio i Ania mogą zarówno czytać jak i pisać na konsolę w oknach o numerach 0 i 1, jak również wykonywać wszystkie polecenia screena (znak ?). Polecenie aclchg * +rwx "#?" oznacza „wszyscy użytkownicy mogą wszystko”.

Screen pozwala również poprzypisywać użytkowników do grup (identyfikowanych przez reprezentanta grupy) i nadawać uprawnienia całym grupom (patrz polecenie aclgrp w manualu).

wall msg
wysyła komunikat do wszystkich użytkowników bieżącej sesji screena

Ekran programu screen podzielony na dwa obszary

Podział okna

Okno screena nie musi być pełnoekranowe. Ekran możemy rozbić na dwa lub więcej obszarów (ang. region), co pokazuje rysunek obok.

C-a S
dzieli bieżący obszar na dwa
C-a TAB
przenosi kursor do następnego obszaru
C-a Q
zamyka wszystkie obszary z wyjątkiem bieżącego, który staje się pełnoekranowy
C-a X
zamyka bieżący obszar

Inne

W oknie screena można użyć kombinacji klawiszy C-a M aby monitorować stan okna. Jeśli teraz zaczniesz coś robić w innym oknie a w oknie monitorowanym coś się zmieni – dostaniesz komunikat o tym w wierszu statusu.

Można w oknie zapuszczać podproces, którego wejście/wyjście może być na różne sposoby połączone z aktualnym procesem okna, klawiaturą i ekranem. Służy do tego polecenie exec, ale przydatność takich filtrów jest dla mnie niejasna (TODO).

Ciekawsze opcje uruchamiania

-L
włącza automatyczne logowanie dla wszystkich okien
-h num
ustawia liczbę wierszy okna zapamiętywanych w buforze (do skrolowania) na num

~/.screenrc

  • ustawianie opcji,
  # zapamiętanie 10tys. ostatnich wierszy w buforze
  defscrollback 10000
  # usuwa komunikat powitalny (o prawach autorskich itp.) przy starcie screena
  startup_message off
  • bindowanie skrótów klawiaturowych
  # C-a space wyswietla liste okien
  bind ' ' windows
  • automatycznie ustanawianie jednego lub więcej okien na starcie
  # otwiera nową sesję shella o nazwie "root", w oknie nr 3
  screen -t root 3

Bibliografia

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>