13 Jun 2007

GNU Screen - najczesciej uzywane opcje

Program screen jest jednym z najprostszych menadżerów okien (wg wikipedii) pozwala dzielić jeden fizyczny terminal pomiędzy parę programów konsolowych, ale jego główną zaletą jest to że po schowaniu (detach) nasze programy działają wciąż tak samo jakbyśmy byli zalogowani w systemie. Program ten ma wiele opcji, ja postanowiłem zapisać sobie tu parę najważniejszych, żeby nie przeglądać obszernego manuala jak coś się zepsuje (np jakiś miś pośle wiadomość przez polecenie wall, to robimy ctrl+shift+l co nam odświeża wszystkie okienka w screenie (redraw)).

Dla tych co się nie orientują by polecenia działały każde trzeba poprzedzić sekwencją klawiszy ^a, czyli ctrla + a. No to jedziemy ...
Wiele programów na jednym screenie:
  • c - tworzenie kolejnego okna
  • A - nazywanie okien
  • <TAB> - przechodzenie pomiędzy podzielonymi oknami
  • n, <spacja> - następne okno
  • p, <backspace> - poprzednie okno
  • " - lista screenów z nazwami

Podział okienek:
  • S - dzielenie
  • :resize - pozwala zmienić proporcje podziału
  • W - przejście do drugiego okna
  • X - niweluje podział

Bezpieczeństwo:
  • :password - pozwala założyć hasło na przywrócenie screena (atach)
  • x - "wygaszenie" terminala, po powrocie trzeba się autentykować - zupełnie tak jakbyśmy się ponownie logowali

Takie tam ;)
  • Jeśli screen został zablokowany posiada zmieniony flow control kombinacją ^a s (ctrl + a s) - nie otrzymuje żadnego zdarzenia reaguje na żadne zdarzenie z klawiatury, należy go odblokować kombinacją ^a q (ctrl + a q) - więcej informacji znajduje się w komentarzach.
  • Monitorowanie zdarzeń: ^a M
  • ^a g - przełączanie visual/audiable bell

Kopiowanie tekstu: Za kopiowanie tekstu jest odpowiedzialna następująca sekwencja: ^a [, ustawienie kursora przy tekście do skopiowania, <spacja>, zaznaczenie tekstu, <spacja> (teraz mamy tekst w buforze ;)), ^a ] - wklejenie tekstu
Screen uruchamiany od razu po połączeniu się ze zdalnym hostem. - Porada bardzo przydatna gdy musimy wykonać jakieś ważne zadania administracyjne kltórych nie powinniśmy przerywać, gdy chcemy by screen uruchomił się od razu z połączeniem do serwera ssh powinniśmy wydać polecenie: ssh uzytkownik@zdalnyhost -t screen -RD.
Screen, polskie znaki - Niektóre konsolowe programy (ekg) nie wspierają utf8, który jest już pewnym standardem jeśli chodzi o lokalizację systemu. Ale na szczęście jest na to rozwiązanie, program screen potrafi zamieniać sekwencje znaków zapisanych w jednym kodowaniu na inne bez jakiejkolwiek dodatkowej ingerencji użytkownika, by móc pisać i oglądać śliczne polskie znaki w utf8 (w ekg) polecam je startować z poniższego skryptu: cat ukg8
#!/bin/bash
##
## Skrypt uruchomieniowy ekg - screen translation ;)
## (c) Michał Górny
## src: http://mgorny.jogger.pl/2006/05/21/ekg2-tips-and-tricks/
export LC_ALL="pl_PL.iso-8859-2"
screen -dmS ekg ekg
export LC_ALL="pl_PL.UTF-8"
sleep 3
screen -r ekg

NIE polecam attachowania screena ze screena, ale jeśli już trzeba to sekcja "Control a Screen within a Screen" dokumentu http://gentoo-wiki.com/TIP_Using_screen jest właśnie temu poświęcona.
Dodatkowe materiały:
http://jakilinux.org/aplikacje/konsola/screen-sztuczki/

4 comments:

  1. > Jeśli screen został zablokowany kombinacją ^a s (ctrl +
    > a s) - nie otrzymuje żadnego zdarzenia z klawiatury,
    > należy go odblokować ^a q (ctrl + a q)

    Otrzymujemy tylko jeszcze nie wiemy.. Doczytaj o flow control..

    ReplyDelete
  2. Masz rację ;) Dziękuje za uściślenie - jakoś mnie to nie interesowało nigdy - po prostu dla mnie to było "zawieszenie screena". Prawdę mówiąc dalej jest - ale dla ścisłości posta poprawię.

    Ale dla uściślenia przytoczę kawałek manuala:

    Każde okno ma ustawienie kontroli przepływu, które określa jak traktować znaki XON i XOFF.

    Czym jest:
    > DC1 (Device Control) Przeznaczony do sterowania urządzeniem. Znak jest ten bardziej znany jako XON. Znak XON służy do wznowienia transmisji w sposób programowy.

    > DC3 (Device Control) Przeznaczone do sterowania urządzeniem. Znak ten jest bardziej znany jako XOFF. Znak XOFF służy do wstrzymania transmisji w sposób programowy.

    Gdy kontrola jest wyłączona, znaki te są ignorowane, co umożliwia użytkownikom przesyłanie ich w prosty sposób do programów.

    Przy włączonej kontroli przepływu, znaki XON i XOFF są używane do natychmiastowego przerywania wyjścia z bieżącego okna. Znaki te można wciąż przesyłać do bieżącego programu, lecz trzeba użyć odpowiednich dwuznakowych komend screena (zwykle "C-a q" (xon) oraz "C-a s" (xoff)). Komendy xon/xoff są też przydatne do wpisywania C-s i C-q obok terminala, przechwytującego te znaki.

    Jeśli pracujesz z włączoną kontrolą przepływu i zauważysz, że naciskanie klawisza przerwania (zwykle C-c) nie przerywa wyświetlania aż do następnych 6-8 linii, spróbuj uruchomić screena z opcją "interrupt" (dodaj flagę "interrupt" do komendy "flow" w .screenrc, lub użyj opcji -i linii komend).

    ReplyDelete
  3. flow control po prostu służy do zamrażania outputu, ot C-s i S-Page_Up S-Page_Down można przewijać, później C-q i szybko C-s i znowu można przewijać.. ;) Program pracuje dalej ale sam output zamarza, jak jest zamrożony to nie widać co się wpisuje ale jak odmrozisz to leci dalej aż dochodzi do miejsca w którym był program gdy wpisywałeś i się "samo" wpisuje.. (np. rm -rf / ^M);)

    ReplyDelete
  4. Wpis Łukasz Milewskiego o screenie znalazłem przez przypadek ale wygląda ćłkiem nieźle ;). Natomiast jkby ktoś chciał ściąge z listą komend screena to powinine spojrzeć na cheatsheeta

    ReplyDelete