Instrukcja do laboratorium z przedmiotu
Podstawy Techniki Komputerowej
Laboratorium nr 6
Temat:
Procesy, zadania, sygnały
Skrypty startowe
Opracowali:
- dr Andrzej Więckowski
- dr Edward Śliwa
Warszawa, marzec 1999
1. Przygotowanie do zajęć
Przed zajęciami laboratoryjnymi należy
zapoznać się z następującymi tematami (z man pages lub dobranej do swojego
poziomu ksiązki opisującej system UNIX - patrz literatura na końcu instrukcji):
- programy, procesy i zadania, istota procesu i zadania
- uruchamianie, kontrolowanie i likwidowanie zadań
- zadania pierwszoplanowe i w tle, demony, procesy niezależne od sesji
(nohup)
- sygnały
- komunikacja pomiędzy użytkownikami
- poczta elektroniczna
Przygotować propozycje skryptów, o których
mowa w dalszej części instrukcji.
2. Informacje o aktualnie uruchomionych procesach
Zapoznać się z
działaniem komendy ps (najlepiej na maszynie gdzie pracuje kilku
użytkowników - można umówić się z kolegami aby rozpocząć sesje na tej samej
maszynie):
- wyświetlić listę procesów
- zidentyfikować kilka par: proces i jego potomek
- wyświetlić listę wszystkich procesów w systemie
- wyświetlić listę wszystkich procesów użytkownika
- wyświetlić listę procesów użytkownika związanych z jednym pseudoterminalem
Przeanalizować otrzymane rezultaty. Porównać z wynikami działań
komend: who, whodo.
3. Zadania
Utworzyć skrypt testowy (zawierający pętlę nieskończoną) i
uruchomić go. Przeprowadzić następujące eksperymenty:
- zawiesić zadanie przez ^Z, sprawdzić stan zadania za pomocą
komend jobs i ps,
- zidentyfikować numer procesu i numer zadania; wznowić zadanie kolejno: w
tle i pierwszym planie,
- zmodyfikować skrypt tak, by próbował wypisywać informacje na standardowe
wyjście i czytać dane ze standardowego wejścia. Jak zachowuje się proces
działający w tle jeżeli:
- ma wypisać informacje na ekranie terminala,
- oczekuje na wprowadzenie danych z klawiatury.
- (dla zaawansowanych) Uruchomić zadanie tak, by podczas wykonania miało
mniejszy priorytet. Zmniejszyć priorytet działającego zadania.
- Uruchomić zadanie tak, by rozpoczęło się wykonywać o określonej godzinie.
4. Sygnały i pułapki
- Usunąć uruchomione poprzednio procesy i zadania testowe.
- Zmodyfikować skrypt testowy tak, by ignorował wszystkie możliwe sygnały.
Uruchomić ten skrypt i spróbować go usunąć przez wysyłanie różnych sygnałów.
- Sprawdzić:
- jaki sygnał otrzymuje proces pierwszoplanowy w chwili wciśnięcia
klawiszy Ctrl-C,
- co się dzieje z procesem w chwili, gdy ginie jego proces macierzysty,
- jaki sygnał jest generowany w chwili zakończenia pracy powłoki.
- Napisać i uruchomić skrypt, ktory będzie działał nawet po wylogowaniu się
użytkownika z systemu (skrypt winien pisać na standardowe wyjście).
Sprawdzić wyniki działania skryptu po powtórnym zalogowaniu się do
systemu.
- Napisać skrypty (wybrane przez prowadzącego zajęcia):
- uruchamiany przy zakończeniu pracy powłoki (logout
script)
- informujący kodem zakończenia o numerze otrzymanego sygnału
- uruchamiający w tle kilka procesów i czekający na ich zakończenie
- zliczający wyslane do niego sygnaly INT
5. Skrypty startowe
- Obejrzeć skrypty startowe używanej przez siebie powłoki systemu UNIX
(skrypt dla wszystkich uzytkowników z katalogu /etc oraz prywatny
skrypt użytkownika znajdujący się w jego prywatnym katalogu).
- Zmodyfikować prywatny skrypt startowy użytkownika w następujący sposób:
- dodać do ścieżki przeszukiwań katalog $HOME/bin przeznaczony na
skrypry i programy tworzone przez użytkownika
- zmodyfikować niektóre zmienne środowiskowe (np. EDITOR, PS1)
dostosowując je do swoich upodobań
- utworzyć kilka aliasów
- Zmodyfikować prywatny skrypt startowy tak, by w czasie logowania
sprawdzał, czy w systemie nie wykonują się już jakieś procesy należące do
użytkownika. Jeśli takie procesy istnieją, skrypt winien wypisać komunikat
przypominający użytkownikowi o konieczności usuwania niepotrzebnych procesów.
- Napisać skrypt, który będzie wykonywany w chwili uruchamiania kolejnej
kopii powłoki.
AW ES