sop 2009 lab11


screen menad\er wirtualnych konsol
Tworzenie i wybór okien:
Ctrl+a c - tworzenie nowego okna
Ctrl+a n - przełączenie do kolejnego okna
Ctrl+a p - przełączenie do poprzedniego okna
Ctrl+a " - wybór okna z listy wszystkich aktywnych okien
Modyfikacja okien:
Ctrl+a S - dzieli poziomo na regiony
Ctrl+a :resize - zmiana wymiarów regionu
Ctrl+a :fit - dostosowanie ekranu do nowego rozmiaru terminala; równowa\ne
Ctrl+a F (wykonuje się po zmianie wymiarów regionu)
Ctrl+a tab - poruszanie się pomiędzy regionami
Ctrl+a d - zwolnienie screen'a i powrót do terminala (podłączenie się do screen'a
poprzez -r)
Ctrl+a A - ustawienie tytułu okna
Ctrl+a x - zablokowanie screen'a (ponowny dostęp do podaniu hasła u\ytkownika)
Ctlr+a ? - zwraca listę przełączników programu screen.
mktemp twórz unikalną nazwę pliku tymczasowego
Narzędzie mktemp pobiera zadany wzorzec nazwy i zastępuje jego część by stworzyć nazwę pliku.
Wynikowa nazwa jest unikalna i nadaje się do u\ywania jako nazwa pliku. Wzorzec mo\e być
dowolną nazwą pliku z dodanymi do niej dokładnie sześcioma znakami 'X', na przykład
/tmp/temp.XXXXXX. Końcowe 'X' zastępowane są przez numer bie\ącego procesu i/lub unikalną
kombinację liter. Liczba unikalnych nazw plików, jakie mo\e zwrócić mktemp daje około 26^6
kombinacji.
Składnia:
mktemp [-d] [-q] [-u] wzorzec
Opcje:
-d Utwórz katalog zamiast pliku
-q Ciche zakończenie działania w przypadku błędu. Przydatne, gdy skrypt nie chce by
komunikat o błędzie trafił na standardowe wyjście błędów.
-u Działaj w trybie  unsafe'' (ryzykownym). Plik tymczasowy będzie skasowany (unlinked)
przed zakończeniem pracy mktemp.
Jeśli mktemp mo\e pomyślnie utworzyć unikalną nazwę pliku, to tworzony jest plik z prawami
0600 (chyba \e podano flagę -u) zaś nazwa pliku wyświetlana jest na standardowym wyjściu.
Narzędzie mktemp kończy pracę z wartością 0 w przypadku powodzenia, zaś 1 przy błędzie.
Przykład:
TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
if [ $? -ne 0 ]; then
echo "$0: nie można utworzyć pliku tymczasowego"
exit 1
fi
Praca z oknami
I.  Okna w Bash'u
Graficzne interfejsy są na ogół wykorzystywane przez mniej zaawansowanych u\ytkowników
systemu, których nie obchodzi sposób działania skryptu i przetwarzanych w nim informacji, a
oczekują oni rozwiązania określonego problemu w minimalnie krótkim czasie z maksymalną
prostotą obsługi.
Darmowy pakiet dialog, twórcą którego jest Savio Lam, a obecnie rozwijany jest przez Thomas'a E.
Dickey'a, oferuję połączenia okienkowego interfejsu i instrukcji skryptowych w środowisku
tekstowym poprzez u\ycie kodów ANSI (ang. ANSI escape control codes).
Dialog jest programem, który umo\liwia prezentację ró\nych pytań lub wyświetlanie komunikatów
przy u\yciu okienek dialogowych ze skryptu powłoki.
Składnia:
dialog --widget parametry
Określenie widget definiuje jeden z dostępnych rodzai okien (przedstawionych w tabeli poni\ej).
Parametry definiują rozmiary okien dialogowych (widget) i tekstu (jeśli jest on wymagane dla
poszczególnych okien).
Okna dialogowe zapewniają informacje wyjściowe w dwóch formach: STDERR (strumień błędów)
lub kodów wyjścia.
Kody wyjścia okien dialogowych determinują określony wybór guzików (buttons). Jeśli wybrany
zostanie guzik OK, lub Yes, komenda dialog zwraca kod wyjścia równy zero, w przypadku
przeciwnym jeden. Mo\liwe jest u\ycie zmiennej specjalnej $?, \eby sprawdzić poprawne
działanie przycisków.
Jeśli okno dialogowe zwraca jakieś dane np. pochodzące z wyboru określonej opcji, polecenie
dialog wysyła dane na STDERR. Oczywiście strumień taki mo\na przekierować np. do pliku:
dialog  inputbox  Wprowadz swoje imię: 10 20 2>imie.txt
Typy okna dialogowe trybu tekstowego
calendar
checklist
form
fselect
gauge
infobox
inputbox
inputmenu
menu
msgbox
pause
passwordbox
passwordform
radiolist
tailbox
tailboxbg
textbox
timebox
yesno
ą Przykłady u\ycia wybranych okien dialogowych:
' okno dialogowe: msgbox
dialog --msgbox text height width
$ dialog --title Testujemy --msgbox "Okno testowe" 10 20
' okno dialogowe: yesno
$ dialog --title "Wybór" --yesno "czy to działa?" 10 20
$ echo $?
1
$
' okno dialogowe: inputbox
$ dialog --inputbox "Podaj swój wiek:" 10 20 2>wiek.txt
$ echo $?
0
$ cat age.txt
20$
' okno dialogowe: textbox
$ dialog --textbox /etc/passwd 15 45
' okno dialogowe: menu
$ dialog --menu "Pomocnik root'a" 20 30 10 1 "Wolne miejsce" 2 \
"Zalogowani użytkownicy" 3 "Użycie pamięci" 4 "Wyjście" 2> text.txt
' okno dialogowe: fselect
$ dialog --title "Wybierz plik" --fselect $HOME/ 10 50 2>file.txt
ą Opcje polecenia dialog
Na standardowych oknach dialogowych mo\na dokonywać przeró\nych przeróbek, poprzez u\ycie
odpowiednich przełączników. Jednym z ju\ poznanych był parametr --title. Listę pozostałych
mo\na otrzymać wydając polecenie dialog  help.
--add-widget
--aspect ratio
--backtitle title
--begin x y
--cancel-label label
--clear
--colors
--cr-wrap
--create-rc file
--defaultno
--default-item string
--exit-label label
--extra-button
--extra-label label
--help
--help-button
--help-label label
--help-status
--ignore
--input-fd
--insecure
--item-help
--keep-window
--max-input size
--nocancel
--no-collapse
--no-kill
--no-label label
--no-shadow
--ok-label label
--output-fd fd
--print-maxsize
--print-size
--print-version
--separate-output
--separator string
--separate-widget string
--shadow
--single-quoted
--sleep sec
--stderr
--stdout
--tab-correct
--tab-len n
--timeout sec
--title title
--trim
--visit-items
--yes-label label
IV. Okna dialogowe w środowisku KDE
Graficzne środowisko KDE standardowo zawiera pakiet kdialog z własnymi komendami do
generowania okien dialogowych. W tym przypadku mamy prawdziwym graficznym interfejsem,
który podobnie jak poprzednio łączy funkcjonalność z prostotą u\ytkowania.
kdialog display-options window-options arguments
Parametr window-options pozwala na określenie typu okna dialogowego. Do wyboru mamy:
--checklist title [tag item status]
--error text
--inputbox text [init]
--menu title [tag item]
--msgbox text
--password text
--radiolist title [tag item status]
--separate-output
--sorry text
--textbox file [width] [height]
--title title
--warningyesno text
--warningcontinuecancel text
--warningyesnocancel text
--yesno text
--yesnocancel text
$ kdialog --checklist "Lista potrzebnych rzeczy" 1 "szczoteczka do zębów"
on 2 "pasta" off 3 "szampon" on 4 "pachnidła" off 5 "szlafrok" off
$ kdialog --checklist "Lista potrzebnych rzeczy" 1 "szczoteczka do zębów"
on 2 "pasta" off 3 "szampon" on 4 "pachnidła" off 5 "szlafrok" off "1"
"3" "5"
$
III.Okna dialogowe w środowisku GNOME
Środowisko graficzne GNOME wspiera dwa popularne pakiety generujące okna dialogowe, są to
gdialog i zenity.
$ zenity  calendar 10/12/2008
--calendar .
--entry
--error
--file-selection
--info
--list
--notification
--progress
--question
--scale
--text-info
--warning
$ zenity  -file-selection /home/student
ą Zenity w skryptach
#!/bin/bash
temp=`mktemp -t temp.XXXXXX`
temp2=`mktemp -t temp2.XXXXXX`
function firewall {
/sbin/iptables -L > $temp
zenity --text-info --title "Lancuchy INPUT, FORWARD, OUTPUT" --filename=$temp --width
750 --height 10
}
function firewall_nat {
/sbin/iptables -t nat -L > $temp
zenity --text-info --title "Reguly dla NAT" --filename=$temp --width 500 --height 10
}
while [ 1 ]
do
zenity --list --radiolist --title "Firewall menu" --column "Zaznacz" --column
"Zawartosc" FALSE "Reguly dla lancuchow ogolnych" FALSE "Reguly dla NAT" TRUE "Exit" >
$temp2
if [ $? -eq 1 ]
then
break
fi
wybor=`cat $temp2`
case $wybor in
"Reguly dla lancuchow ogolnych")
firewall ;;
"Reguly dla NAT")
firewall_nat ;;
Exit)
break ;;
*)
zenity --info "Niewlasciwe zaznaczenie"
esac
done
Proces init, programy i skrypty startowe.
Jak mo\na się było do tej pory przekonać większość programów u\ywanych w Linux'ie jest mała i
zorientowana w wykonywaniu określonych zadań (np.: cat, grep, tr). Jednocześnie ka\de
narzędzie jest wysoce wyspecjalizowane w wykonywaniu przypisanych funkcji.
Proste zadania wymagają łączenia ze sobą długich ciągów poleceń. Tak te\ i jest z procesem
uruchamiania systemu, a dokładniej z oprogramowaniem konfigurującym system podczas jego
startu.
Sam proces uruchomienia powłoki, zapoczątkowuje program znajdujący i dołączający się do
wirtualnej konsoli. W efekcie czego uruchamia on inny program wyświetlający na ekranie
u\ytkownika komunikat login i czekający na wprowadzenie danych. Po pomyślnej weryfikacji
nazwy u\ytkownika i hasła uruchamiana jest dopiero powłoka (interpreter poleceń).
Podział działania systemu na elementarne narzędzia, zapewnia jego większą elastyczność i mniejsze
zu\ycie zasobów. Ze względu jednak na tą ró\norodność, potrzebny jest program zarządzający
działem narzędzi składowych, cyklicznie, podczas ka\dego startu systemu. Tym programem jest
właśnie init. Jest więc on procesem nadrzędnym w stosunku do pozostałych procesów
działających w systemie.
Po wybraniu systemu operacyjnego LILO ładuje jądro (kernel). Jądro wykrywa (lub przynajmniej
próbuje) sprzęt jaki mamy w komputerze i stara się załadować dla niego najodpowiedniejsze
sterowniki. Następnie jądro uruchamia proces init.
Poziomy startu.
Proces init posiada tzw. poziomy działania/startu (ang. runlevel) określające zbiory programów,
które powinny być uruchomione w zale\ności od przeznaczenie stacji z systemem Linux.
Dlatego inny poziom wykorzystamy w przypadku stacji z dostęp wielu u\ytkowników, inny w
przypadku konserwacji systemu, a jeszcze inny jeśli stacja będzie serwerem plików, czy stron www.
Domyślnym poziomem startu jest 2, zapewniający dostęp w trybie multiusers z wszystkimi
uruchomionymi usługami uznawanymi za istotne. Przejście do innego poziomu odbywa się poprzez
wywołanie polecenia init nr_poziomu (init 3)
Wyró\nia się następujące poziomy startu:
0 = halt - zatrzymanie systemu
1 = single user mode - tryb jednego u\ytkownika
2 = unused (but configured the same as runlevel 3) - nie u\ywany ale skonfigurowany jak runlevel 3
3 = multiuser mode (default Slackware runlevel) - tryb wielu u\ytkowników
4 = X11 with KDM/GDM/XDM (session managers) - tryb X Windows
5 = unused (but configured the same as runlevel 3) - nie u\ywany ale skonfigurowany jak runlevel 3
6 = reboot - ponowne uruchomienie
Slackware domyślnie uruchamia się do runlevel 3 - tryb multiuser. Gdy wyłączamy lub ponownie
uruchamiamy komputer (komendą reboot lub shutdown) to przechodzimy odpowiednio do runlevel
0 lub 6.
Zaraz po uruchomieniu proces init czyta plik konfiguracyjny /etc/inittab. Informacje w nim
zawarte określają jakie skrypty startowe uruchomić i w jakiej kolejności.
$ cat /etc/inittab
# These are the default runlevels in Slackware:
# 0 = halt
# 1 = single user mode
# 2 = unused (but configured the same as runlevel 3)
# 3 = multiuser mode (default Slackware runlevel)
# 4 = X11 with KDM/GDM/XDM (session managers)
# 5 = unused (but configured the same as runlevel 3)
# 6 = reboot
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S #A# Skrypt uruchamiany jako pierwszy po załadowaniu
programu init
# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K
# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M
# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now #A# sposób reakcji na wcisniecie [ctrl]+[alt]+
[del]
# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0
# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6
# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start
# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop
#A# Konsole
# These are the standard console login getties in multiuser mode:
c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100
# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100
#A# X Windows runlevel
# Runlevel 4 used to be for an X window only system, until we discovered
# that it throws init into a loop that keeps your load avg at least 1 all
# the time. Thus, there is now one getty opened on tty6. Hopefully no one
# will notice. ;^)
# It might not be bad to have one text console anyway, in case something
# happens to X.
x1:4:wait:/etc/rc.d/rc.4
# End of /etc/inittab
Wszystkie pozycje w tym pliku mają formę:
ID:runlevel:akcja:proces+opcje
ID - jest to unikalna sekwencja dwóch znaków identyfikującawpis w pliku.
Runlevel - numer lub numery runlevel przy którychinit uruchamia dany proces.
Flagi działania:
1. boot - proces zostanie uruchomiony przy starcie systemu. Pole określające runlevel zostanie
zignorowane.
2. bootwait - jak powy\ej z tym \e proces init poczeka a\ zakończy się wykonywanie programu
podanego w części proces.
3. initdefault - ustawia domyślny runlevel.
4. kbrequest - proces oznaczony tą akcją zostanie uruchomiony gdy zostanie naciśnięta
odpowiednie kombinacja klawiszy. Po szczegóły konfiguracji tej akcji odsyłam do manuala inittab
and kbd.
5. off - nie robi nic.
6. once - proces zostanie uruchomiony tylko raz przy przechodzeniu do danego runlevel.
7. ondemand - proces oznaczony taką akcją zostanie uruchomiony przy przechodzeniu do tzw.
ondemand runlevel, które oznaczone są 'a', 'b', 'c'. Przy przechodzeniu do tych runlevel nie
następuje zmiana obecnego runlevel.
8. powerfail - to samo co powerwait z tym \e init nie będzie czekać na zakończenie procesu.
9. powerfailnow - proces zostanie uruchomiony gdy init otrzyma sygnał, \e bateria UPS jest na
wyczerpaniu.
10. powerokwait - proces zostanie uruchomiony gdy init otrzyma sygnał SIGPWR i istnieje plik
/etc/powerstatus zawierający słowo OK. Znaczy to, \e zasilanie wróciło ponownie.
11. powerwait - proces zostanie uruchomiony gdy init otrzyma sygnał SIGPWR, wskazujący na
problemy z zasilaniem. Init poczeka na zakończenie procesu zanim podejmie jakąkolwiek inna
akcje.
12. respawn - po zakończeniu programu uruchamiany jest on po raz kolejny. Wykorzystywane jest
to np. by jeszcze raz uruchomić proces agetty - tekst w ramce poni\ej.
13. sysinit - uruchamiane tylko podczas startu systemu.
proces - skrypt lub program, który nale\y uruchomić.
Pole runlevel mo\e jak ju\ wspomniałem zawierać kilka stanów runlevel np.:
rc:2345:wait:/etc/rc.d/rc.M
oznacza, \e skrypt /etc/rc.d/rc.M zostanie uruchomiony gdy system będzie przechodził do jednego z
czterech runlevel 2, 3, 4, 5.
Katalog rc.d
Mając powy\sze informacje jesteśmy w stanie prześledzić start systemu. Poni\ej przedstawiam
diagram w jakiej kolejności uruchamiane są skrypty startowe przy przechodzeniu systemu do
runlevel 3. Jest to tylko poglądowy diagram (nie wszystkie uruchamiane pliki zostały
uwzględnione). Wpisy zaczynające się do '#'to skrypty, które domyślnie nie są uruchamiane, nazwy
w nawiasach to pliki które wykorzystywane są wewnątrz skryptu. Niektóre ze skryptów
uruchamiane są tylko gdy zajdą odpowiednie warunki - by dowiedzieć się więcej przeglądnij
zawartość interesujących cię plików konfiguracyjnych.
Skrypty startowe
/etc/rc.d/rc.S
Skrypt ten zawsze uruchamiany jest jako pierwszy. Zawarte w nim polecania przygotowują system
do prawidłowej pracy. Włączany jest swap, sprawdzane jest czy system został prawidłowo
zamknięty a jeśli nie to przeprowadzane jest sprawdzanie dysków... itd.
Jak widać na diagramie z tego pliku wywoływany jest równie\ skrypt /etc/rc.d/rc.modules oraz /etc/
rc.d/rc.serial.
/etc/rc.d/rc.modules
Plik, w którym konfigurujemy jakie moduły jądra chcemy załadować przy starcie. Moduły jądra są
jak sterowniki urządzeń. Warto przeglądnąć ten plik.
/etc/rc.d/rc.serial
Konfiguracja portów szeregowych.
/etc/rc.d/rc.M
Skrypt uruchamiany podczas przechodzenia do trybu "multiuser" (runlevel 3). Z jego wnętrza
uruchamiana jest przewa\ająca ilość skryptów. Jeśli chcesz zaznajomić się dokładnie ze startem
systemu powinieneś wnikliwie przeanalizować ten plik.
/etc/rc.d/rc.inet1
Konfiguracja i "podnoszenie" interfejsów sieciowych. Skrypt korzysta w tym celu z pliku
konfiguracyjnego /etc/rc.d/rc.inet1.conf.
/etc/rc.d/rc.hotplug
Uruchamianie urządzeń hotplug (USB, PCI).
/etc/rc.d/rc.inet2
Startowanie usług sieciowych (http, ftp, ssh, nfs ...).
Po wykonaniu skryptu /etc/rc.d/rc.inet2 startują kolejne usługi sieciowe oraz inne programy
potrzebne do prawidłowego działania systemu. W celu dogłębnego poznania startu systemu
powinieneś przeglądnąć powy\sze pliki oraz zapoznać się z komendami / poleceniami u\ytymi w
ka\dym z nich.
Zadanie 1:
Stworzyć tekstowe okno dialogowe  Pomocnik root'a informujące o wolnym zajętości miejsca na
dysku (partycjach), zalogowanych u\ytkownika (u\ytkownikach posiadających konta w systemie),
zasobach pamięci operacyjnej, systemowej.
Zadanie 2:
Stworzyć okienkowe okno dialogowe w środowisku KDE  Pomocnik root'a informujące o
wolnym zajętości miejsca na dysku (partycjach), zalogowanych u\ytkownika (u\ytkownikach
posiadających konta w systemie), zasobach pamięci operacyjnej, systemowej.


Wyszukiwarka

Podobne podstrony:
sop 2009 lab04
sop 2009 lab05
sop 2009 lab12
sop 2009 lab10
sop 2009 lab03
sop 2009 lab08
sop 2009 lab01
sop 2009 lab02
sop 2009 lab06
sop 2009 lab07
sop 2009 lab09
2009 2010 rejon
2009 pytania testowe
[W] Badania Operacyjne Zagadnienia transportowe (2009 04 19)
Twilight Saga New Moon 2009 CAM XviD POISON

więcej podobnych podstron