Wykonywanie poleceń, potoki, skrypty, zmienne systemowe, system X Window, serwer i klient systemu X Window, zarządcy okienek, praca zdalna.
Przed przystąpieniem do zajęć należy przypomnieć sobie podstawowe
pojęcia dotyczące pracy w systemie Unix oraz systemu X
Window. Przypomnij sobie ułatwienia, jakie oferuje w pracy powłoka
użytkownika bash (historia, przyrostowe wyszukiwanie wstecz
wykonanych poleceń (Ctrl-r
), uzupełnianie nazw (Tab
)),
sposób uruchamiania przetwarzania potokowego i przekierowywania
strumieni danych. Upewnij się, że rozumiesz działanie skryptów
załączonych jako materiały do tego ćwiczenia (omówionych na
wykładzie). Przypomnij sobie także wiadomości o terminalach
wirtualnych systemu Linux i przełączaniu się między tymi terminalami
(Ctrl-Alt-Fn
). Dowiedz się, w jaki sposób w systemie X Window
realizowana jest architektura klient-serwer.
X
(z ewentualnym argumentem wskazującym numer uruchamianego serwera, np. by uruchomić drugi serwer X Window X :1
– podstawowy serwer ma numer 0; aby klienty komunikowały się z tak uruchomionym
serwerem muszą otrzymać argument np. -display :1
),
xterm -display :1
) czy zarządca okien (przykładowo fvwm -display :1
),
kill
uzupełnionym identyfikatorem procesu serwera (PID), lub naciskając klawisz Ctrl-C
w terminalu, w którym został on uruchomiony. Na Linuksie można również zabić serwer kombinacją klawiszy Ctrl-Alt-Backspace
(jeśli taka możliwość nie została zablokowana przez administratora).
xterm
. Pamiętaj, że zakończenie działania tak uruchomionego terminala automatycznie zakończy sesję.
DISPLAY
(polecenie echo $DISPLAY
).
&
) kilka
prostych klientów: xclock, xcalc, xmag, xload, xeyes. Wypróbuj
podstawowe opcje wywołania klientów: -geometry, -fg, -bg, -bd oraz
opcje specyficzne klientów.
jobs
wyświetl listę procesów uruchomionych
z poziomu emulatora terminala w którym pracujesz (lub
alternatywnie listę wszystkich procesów użytkownika poleceniem
ps -fu $LOGNAME
). Zakończ wybrane z uruchomionych
w bieżącym serwerze X Window klienty (kill, a także xkill).
twm&
). Wypróbuj:
Zapoznaj się z dokumentacją każdego z badanych zarządców okien i sprawdź, czy jest możliwa ich konfiguracja przez plik(i) konfiguracyjny(e) i/lub jak w plikach konfiguracyjnych zapisywana jest konfiguracja ustawiona interakcyjnie. W szczególności sprawdź, czy łatwo jest ustawić zachowanie serwera focus-follows-mouse oraz click-to-focus.
Oceń który z przetestowanych zarządców okien byłby najlepszym kandydatem na wystartowanie prostej i niezawodnej sesji. Dopracuj jego optymalną konfigurację i zanotuj szczegóły.
xterm
, jeden działający na
komputerze diablo, drugi na panamincie. Upewnij się, że twoim
interpreterem poleceń jest w nich powłoka bash (echo $SHELL
). Testuj
wykonywane polecenia/skrypty na obu systemach. Rozpakuj do swojego katalogu domowego lokalne archiwum ~mucha/edu/info1/pliki_do_pracy.tgz
(tar -xvzf ~mucha/edu/info1/pliki_do_pracy.tgz
). Zapoznaj się z jego strukturą (tree
, tree -d
).
top
(alternatywnie htop
), zapoznaj się z udostępnianymi przez niego informacjami o systemie, zmień wybrane parametry wyświetlania. Podobnie zapoznaj się z programami uptime
, df -h
, tree
, who
, last
.
lhs
(list human sorted) dla polecenia, które
wyświetli listę podkatalogów bieżącego katalogu, posortowaną według
ich wielkości, z podaniem tej wielkości w formacie czytelnym dla
człowieka (odpowiednio do wielkości katalogu w bajtach, kilobajtach,
megabajtach).
*~
,
#*#
).
sed
napisz polecenie zamieniające wybrane słowo we wskazanym pliku na inne.
pdf
wybierze fragment wskazanej kolejnym argumentem strony i zapisze go w formacie jpg
.
czy_jest.sh
tak, by wysyłał informację o zalogowaniu pocztą elektroniczną a następnie spowoduj jego cykliczne uruchamianie w zadanych odstępach czasu z wykorzystaniem programu do harmonogramowania zadań cron
.
userfriendly
losowo wybrany komiks i wyświetla
go. Zmodyfikuj skrypt tak, by pobierał i wyświetlał losowy cytat ze
strony en.wikiquote.org/wiki/Wikiquote:Quote_of_the_Day
. (Jak
widać z konstrukcji dołączonego skryptu zadanie wymaga analizy
struktury pobieranej strony www. W tym celu pobierz stronę
z wikiquote
i zauważ, że znajdujące się w niej linie
z cytatami zawierają znacznik <dd>
. By z uzyskanych linii
z cytatami usunąć wszystkie znaczniki html można posłużyć się
poleceniem sed -e 's/<[^>]*>//g'
, do wybrania jednej linii
z wielu z pliku może posłużyć odpowiednia kombinacja poleceń
head
i tail
, liczbę losową można uzyskać poleceniem
$RANDOM
.)
Wypróbuj operacje menu xterma: trzymając naciśnięty klawisz Ctrl naciskaj po kolei klawisze myszy i próbuj wybrać opcje menu i sprawdzać ich znaczenie.
Wyświetl zawartość jakiegoś pliku aby zapełnić okno xterma tekstem. Wypróbuj operacje zaznaczania myszą: naciskając lewy klawisz myszy zaznacz fragment tekstu w oknie xterma. Następnie sprawdź jak naciskanie prawego klawisza myszy rozciąga to zaznaczenie, zarówno w przód jak i w tył.
Uruchom osobne okno jakiegoś edytora okienkowego, np. emacsa (z geometrią opracowaną wcześniej) i środkowym klawiszem wklejaj doń kolejno zaznaczone fragmenty tekstu. Upewnij się, że dobrze panujesz nad tym, co i gdzie zostaje wklejone.
Skasuj bieżące zaznaczenie w oknie xterma. Z kolei spróbuj podwójnego kliknięcia lewym klawiszem myszy (zaznacza słowo); sprawdź jak teraz działa rozciąganie zaznaczenia prawym klawiszem. Eksperymentuj z czasem: jak szybko musisz klikać myszą aby zostało to uznane przez serwer jako podwójne kliknięcie zamiast dwóch pojedynczych.
Na koniec spróbuj potrójnego kliknięcia, co ono zaznacza, jak działa teraz rozciąganie zaznaczenia? Jaki efekt daje poczwórne kliknięcie?
Uruchom inne emulatory terminala: urxvt, gnome-terminal. Przejrzyj opcje z ich menu, porównaj własności zaznaczania tekstu myszą.
man xset
) najpierw sprawdź aktualne
ustawienia serwera (parametr q), a następnie zmieniaj parametry
wygaszacza ekranu. Ustaw bardzo krótki czas wygaszacza ekranu (s).
Sprawdź możliwość ustawiania parametrów „dzwonka'' (b). Sprawdź
ustawienia parametrów myszy (m), znajdź optymalne dla siebie
ustawienia podwójnego i potrójnego kliknięcia myszą.
Programem xsetroot
ustaw kolor tła.
man twm
) i
posługując się tą dokumentacją:
twm
(.twmrc) do
swojego katalogu domowego. Zapoznaj się z jego treścią.
twm
wywoływanego kliknięciem
myszy w tle tak, aby zawierało wywołania popularnych klientów:
acroreada i netscape'a/firefoksa (polecenie f.exec
).
Przejrzyj listę innych flag sterujących pracą TWMa
(np. NoTitleFocus, RandomPlacement, OpaqueMove), wypróbuj je
i ostatecznie opracuj plik konfiguracyjny .twmrc
. Sprawdź,
że działa tak jak chcesz.
Treść plików konfiguracyjnych .xinitrc
i .twmrc
opracuj tak, aby była zrozumiała (komentarze) i aby łatwo można było
je w dalszym ciągu modyfikować i rozwijać.
Uwaga: TWM normalnie realizuje naturalne zachowanie serwera zwane focus-follows-mouse, tzn. poruszanie myszą powoduje, że aktywne jest okno, nad którym znajduje się kursor myszy (tak samo zachowuje się serwer w braku zarządcy okien). Okno, które staje się aktywne nie „wypływa'' automatycznie na wierzch, a tylko zaczyna ono (a ściślej związany z nim klient) otrzymywać wszystkie zdarzenia z klawiatury i myszy.
Inne typowe zachowanie serwera zwane click-to-focus, pozwala zachować aktywność okno niezależnie od ruchów myszy. Zmianę okna aktywnego wywołuje się wtedy poprzez kliknięcie w wybranym oknie myszą. (Użytkownicy komputerów dzielą się na zwolenników jednego albo drugiego zachowania systemu okienkowego i potrafią toczyć między sobą zażarte dysputy. Określ swoje preferencje w tym sporze.)
TWM pozwala na włączenie pewnej wersji zachowania
click-to-focus przez uruchomienie swojej funkcji
f.focus
, standardowo uruchamianej w jego menu. Jednak inni
zarządcy okien pozwalają na bezpośrednie przełączanie się pomiędzy
tymi dwoma podstawowymi zachowaniami.
.xinitrc
w katalogu domowym, pamiętając o dodaniu znaku
&
na końcu każdego wiersza wywołującego klienta okienkowego
(jest to zbędne dla programów natychmiast kończących pracę, takich
jak xset
). Jako ostatnią pozycję w pliku wpisz wywołanie
xterma z opcją -title GLOWNY
, lecz bez znaku &
.
Unicestwij bieżącą sesję serwera X Window wraz z jego wszystkimi
klientami. Następnie ponownie uruchom serwer X Window poleceniem
xinit
(jeśli w systemie działa już jeden serwer to
poleceniem xinit -- :1
). Zaobserwuj jak zakończenie
wykonywania wszystkich klientów powoduje automatyczne zakończenie
pracy serwera X Window. Powtórz eksperymenty usuwając znak
&
z niektórych wywołań, a potem także dodając go do
ostatniego wywołania xterma (głównego).
Zmień treść pliku .xinitrc
tak, aby program twm
był ostatnim wywoływanym klientem (bez &
). Sprawdź, że
zakończenie pracy zarządcy okien powoduję teraz zakończenie sesji
serwera X Window. To jest przydatny i często używany sposób pracy.
Sprawdź jaki wybór środowisk graficznych posiada Twój komputer (powinny być dostępne do wyboru na ekranie logowania). Uruchamiaj je kolejno (na przykład: Gnome, XFCE, WindowMaker), i przeprowadź podstawowe porównania. Po pierwsze, sprawdź własności zarządcy okien uruchomionego w danym środowisku, podobnie jak było to robione w punkcie „Porównanie własności zarządców okien''. Po drugie, oceń funkcjonalność i ergonomię całego środowiska. Oceń również możliwość jego konfiguracji i dostosowania do Twoich preferencji.
Sprawdź stan autoryzacji xhost
wyświetlania w lokalnym
serwerze. Spowoduj zakaz wyświetlania zdalnym klientom, oraz
następnie zezwolenie na wyświetlanie dla wybranego adresu IP.
Sprawdź czy te ustawienia działają (np. współpracując z kolegą).
Wyłącz zgodę na wyświetlanie xhost
, sprawdź, że lista
xhost
jest pusta, i przekaż klucz autoryzacyjny sesji X
Window na wybrany zdalny komputer, poleceniem podobnym do
poniższego:
xauth extract - $DISPLAY | ssh diablo.ict.pwr.wroc.pl /usr/openwin/bin/xauth merge -
Uwaga: jeśli na zdalnym komputerze posiadasz konto ze wspólnym systemem plików (tak jak to się ma pomiędzy diablo a panamintem) to nie ma potrzeby przekazywania kluczy autoryzacyjnych pomiędzy tymi komputerami, ponieważ klucz jest i tak zapisany we współdzielonym katalogu i klienty z obu komputerów od razu mają do nich dostęp. W takim przypadku, współpracując z kolegą/koleżanką, możesz przesłać jemu/jej swój klucz autoryzacyjny (sprawdź jak w tym celu należy wywołać program ssh). Następnie sprawdź, że klucz działa, tzn. że klienty wywoływane przez kolegę ze wskazaniem Twojego serwera są prawidłowo wyświetlane.
Następnie wygeneruj programem xauth nowy klucz autoryzacyjny i sprawdź, że z komputera/ów, którym poprzednio wysłałeś/aś klucz już nie można podłączyć się do Twojego serwera.
Podłącz się do zdalnego serwera uniksowego poleceniem ssh -Y
(w przypadku starszych wersji ssh -X
). Sprawdź, że w zdalnej
sesji utworzyła się „magicznie'' zmienna DISPLAY
z dziwnym
ustawieniem nieistniejącego serwera. Sprawdź działanie klientów.
Opracuj alternatywne rozwiązanie automatycznego wywoływania klientów
do pliku .xinitrc
.
Nie wklejaj otrzymanych obrazków do sprawozdania, ani nie wysłaj ich prowadzącemu!
X -query serwer.ip.adres :1
Zaloguj się na zdalny system, sprawdź jaka konfiguracja zostanie uruchomiona, jakie jest ustawienie zmiennej DISPLAY, jaki pracuje zarządca okien. Sprawdź jak i skąd można konfigurować elementy systemu: konfigurację sesji .xsession, konfigurację zarządcy okien, ustawienia zasobów. Jak działają uprawnienia, co można kontrolować z systemu lokalnego? Sformułuj krótkie wnioski w sprawozdaniu.
Dodatkowo/alternatywnie uruchom program Xephyr, który jest klientem X Window (a więc trzeba go uruchomić na jakimś działającym serwerze) i jednocześnie tworzy nowy serwer o zadanym numerze:
Xephyr -screen 1024x768 -display :0 -query server.ip.adres :1
W oknie Xephyra zaloguj się na zdalny system, sprawdź konfigurację. Odpal emulator terminala. Spróbuj uruchamiać na serwerze Xephyr klienty z wyświetlaniem na serwer bazowy i w przeciwnym kierunku.
pl_PL.ISO8859-2
. Sprawdź
aktualne ustawienia lokalizacji (locale
). Sprawdź, jak wpisuje
się polskie litery do różnych elementów systemu: xterma, emacsa,
netscape'a/firefoksa. Sprawdź, czy używane czcionki poprawnie
wyświetlają polskie litery. Jeśli któryś z klientów nie wyświetla
polskich liter (sprawdź xterm), spróbuj wywołać go z ustawieniem
czcionki (opcja -fn) odpowiadającej wybranej polskiej lokalizacji.
Sprawdź, jakim zasobem można ustawić wybieranie tej czcionki na
stałe.
man xclock
). Sprawdź,
że po zapisaniu ustawień zasobów na pliku i jego załadowaniu do
serwera (xrdb merge nazwapliku), kolejne uruchamiane wersje danego
klienta stosują się do tych ustawień zasobów. (Program editres
teoretycznie pozwala na dynamiczną modyfikację wartości zasobów
pracujących klientów, ale praktycznie większość klientów ignoruje te
polecenia, jak wyjaśniono w opisie programu editres.)
Przeczytaj opis zasobów edytora emacs i eksperymentując z
ustawianiem wybranych zasobów programem xrdb
, dobierz
optymalne wartości trzech (lub więcej) wybranych zasobów. Nie
korzystaj z żadnych plików (np. .Xdefaults
albo
.Xresources
, ani innych), tylko wykonaj ustawienia zasobów
z poziomu shella. Na przykład, mogą to być: geometria okna,
czytelne kolory (-bg -fg -bd), oraz czytelna, łatwa do pracy
czcionka (listę dostępnych czcionek można uzyskać programem
xlsfonts, a interakcyjnie przeglądać i wybierać czcionki programem
xfontsel). Sprawdź, że kopie emacsaa uruchamiane z różnych
komputerów realizują ustawione wartości zasobów. Wpisz wybraną
specyfikację zasobów do pliku .Xdefaults
na lokalnym
komputerze. Zatrzymaj i ponownie uruchom serwer X Window i upewnij
się, że emacs konfiguruje się w oczekiwany sposób.
.xinitrc
. Sprawdź jak nazywa się
program zarządcy okien, jakie ma możliwości, jakie elementy
zachowania serwera wymusza. Sprawdź jak możesz konfigurować
zachowanie tego zarządcy okien i całe środowisko. Spróbuj ustawić
zachowania click-to-focus oraz
focus-follows-mouse.
This document was generated using the LaTeX2HTML translator Version 2019.2 (Released June 5, 2019)
The command line arguments were:
latex2html -html_version 3.2,latin2,unicode -split 0 -no_navigation PProg_lab_04.tex
The translation was initiated on 2021-11-22