8.4 Wirtualne terminale

Zdarzyło ci się może kiedyś, że będąc w środku robienia jednej rzeczy, nagle masz ochotę/musisz zrobić coś innego? Możesz oczywiście zakończyć aktualnie uruchomiony program i uruchomić kolejny, ale przecież używasz systemu wieloużytkownikowego, czyż nie? I możesz zalogować się jednocześnie tyle razy, ile tylko zapragniesz, prawda? Tak więc, dlaczego ograniczać się do robienia tylko jednej rzeczy, skoro można wykonać ich kilka równolegle?

Takie ograniczenie da się zwalczyć. Co prawda nie podłącza się kilku klawiatur do jednego komputera, podobnie jest z myszami i, poniekąd, monitorami; zresztą wielu z nas nie chciałoby tego nawet. Tak więc sprzęt nie przynosi żądanego rozwiązania. Pozostaje oprogramowanie. Linux staje na wysokości zadania, oferując równoległy dostęp do wielu konsol (tzw. “wirtualnych terminali”, z ang. “virtual terminals”, w skrócie “VTs”).

Poprzez naciśnięcie kombinacji Alt oraz klawisza funkcyjnego możesz przełączać się między konsolami; każdy klawisz funkcyjny odpowiada jednej z nich. Slackware domyślnie oferuje 6 konsol. Alt+F2 przeniesie cię do drugiej, Alt+F3 do trzeciej, itd.

Pozostałe klawisze funkcyjne są zarezerwowane dla sesji X-ów. Wszystkie uruchomione okienka używają swojego własnego VT, począwszy od siódmego (Alt+F7) w górę. Gdy jesteś pod X-ami, kombinacja Alt+Klawisz funkcyjny zostaje zastąpiona przez Ctrl+Alt+Klawisz funkcyjny; tak więc, by powrócić spod X-ów do konsoli (bez zamykania sesji X-ów), wystarczy wcisnąć Ctrl+Alt+F3 (przeniesie cię to do trzeciej konsoli). Powrót pod X-y nastąpi po wciśnięciu Alt+F7 (przy założeniu, iż używana była pierwsza sesja X-ów).

8.4.1 Screen

A co z sytuacjami, gdy nie mamy dostępu do większej ilości konsol? Co wtedy? Na szczęście Slackware zawiera wspaniały menedżer okien, całkiem trafnie nazwany screen (z ang. ekran). screen jest emulatorem terminala, posiadającym jego pewne cechy. Wykonanie polecenia screen wypisze krótkie wprowadzenie, po czym przełączy nas do konsoli. Będąc emulatorem wirtualnego terminala, screen posiada swoje własne komendy. Każda z nich zaczyna się od klawiszy Crtl+A. Dla przykładu: Ctrl+A+C stworzy otworzy nową konsolę (C - skrót od ang. create “utwórz”). Ctrl+A+N przełączy użytkownika do następnego otwartego terminala (N - z ang. next “następny”). Ctrl+A+P powoduje powrót do poprzedniego terminala (P - ang. previous “poprzedni”).

screen oferuje także odłączanie i ponowne dołączanie swoich sesji, co jest szczególnie przydatne podczas sesji zdalnych przez ssh oraz telnet, (więcej na temat tej dwójki - już niedługo). Ctrl+A+D odłączy aktualnie aktywny ekran. Wykonanie screen -r wypisze wszystkie aktualnie uruchomione ekrany, do których można się ponownie podłączyć.

% screen -r
There are several suitable screens on:
     1212.pts-1.redtail      (Detached)
     1195.pts-1.redtail      (Detached)
     1225.pts-1.redtail      (Detached)
     17146.pts-1.sanctuary   (Dead ???)
Remove dead screens with 'screen -wipe'.
Type "screen [-d] -r [pid.]tty.host" to resume one of them. 

Uruchomienie screen -r 1212 podłączy ponownie pierwszy z wypisanych ekranów. Wspomniałem już, jak użyteczne jest to w przypadku sesji zdalnych. Jeżeli byłem zalogowany do zdalnego serwera Slackware poprzez ssh i moje połączenie zostało przypadkowo zerwane z jakiegoś powodu (choćby przez chwilowy brak prądu), to wszystko co robiłem momentalnie znika. Może to być bardzo nieprzyjemne. Jednakże używanie screen'a zabezpiecza przed odłączeniem sesji, jeżeli połączenie zostanie przerwane. Gdy tylko połączenie z serwerem zostanie przywrócone, mogę ponownie podłączyć się do uruchomionego wcześniej ekranu i podjąć pracę w miejscu, w którym została ona przerwana.

Grenlandia 2012