[ Pobierz całość w formacie PDF ]

wykonywaną przez użytkownika komendę w ukrytym pliku w katalogu użytkownika. Do pliku
Strona 5-32
Elementarz un*x owy
tego nie ma potrzeby zaglądać. Po przejściu do trybu wydawania komend vi (klawisz Esc)
możemy ich używać do wyświetlania po kolei wszystkich zapamiętanych przez shell poleceń (w
bash posługujemy się klawiszami strzałek góra/dół). Służą do tego dwie komendy (litery):
" Å" k - każde wciÅ›niÄ™cie litery k spowoduje wyÅ›wietlenie coraz wczeÅ›niej wprowadzonego
przez użytkownika polecenia
" Å" l - każde wciÅ›niÄ™cie litery l spowoduje wyÅ›wietlenie polecenia wprowadzonego po tym,
które jest w danej chwili wyświetlane (to na wypadek gdybyśmy się, za pomocą k, cofnęli
za daleko)
Tak więc wciśnięcie sekwencji klawiszy Esc k k l spowoduje wyświetlenie ostatnio
wprowadzonego polecenia.
Gdy już wyświetliliśmy polecenie, o które nam chodziło możemy je wykonać ponownie (wciskając
Enter) lub zmodyfikować je wg procedury z poprzedniego rozdziału (już nie trzeba wciskać Esc
by przejść do trybu wydawania komend, choć nic się nie stanie, jeśli to zrobimy).
Uwaga: zarówno edycja wiersza poleceń jak i historia mogą nie działać, jeśli administrator zmienił
standardowe ustawienia systemu (choć zwykle takimi drobiazgami się nie zajmuje).
5.5.4 Uzupełnianie nazw plików
W trakcie wprowadzania polecenia możemy dwukrotnie wcisnąć klawisz Esc (w niektórych
shell'ach, jak bash, funkcję tę pełni klawisz Tab), aby shell dopisał brakujące znaki w
niedokończonej przez nas nazwie pliku (lub katalogu). Jeśli znaki, które wprowadziliśmy nie
pozwalają na identyfikację tylko jednego pliku (jest kilka plików o tym właśnie początku)
usłyszymy sygnał dzwiękowy. Jednak, jeśli da się cokolwiek dopisać (nawet, jeśli nie wszystko) to
shell to zrobi. W tym momencie możemy też wcisnąć sekwencję klawiszy Esc = (Esc a potem
znak równości), aby shell pokazał nam wszystkie pliki o tym właśnie początku. Dopisujemy teraz
tyle znaków, aby shell mógł coś dopisać (niekoniecznie wszystko) i znowu wciskamy Esc Esc. W
efekcie proces wpisywania przez nas znaków i (po Esc Esc) uzupełniania nazwy trwa aż
uzyskamy pełną nazwę danego pliku lub katalogu. Procedura ta dotyczy także ścieżek dostępu, w
których poszczególne nazwy katalogów możemy poddawać operacji uzupełniania. W poniższym
przykładzie operacja uzupełniania ścieżki dostępu do pliku pli2czek (polecenie rm) wykonywana
jest w jednej linii (nigdzie nie ma Enter'a) jednak została rozbita na kilka linii dla ułatwienia
zrozumienia.
$ touch pliczek pli2czek
$ rm /use
$ rm /users/mc
$ rm /users/mcj/pli2
$ rm /users/mcj/pli2czek
$
5.5.5 Skróty "~" i "~user"
Shell dysponuje kilkoma skrótami, które znowu ułatwiają nam wpisywanie długich ścieżek
dostępu. Skróty te to:
" Å" ~ oznacza katalog domowy użytkownika, który wpisuje ten znak w linii poleceÅ„
" Å" ~user oznacza katalog domowy użytkownika o nazwie user
Strona 5-33
Elementarz un*x owy
Przykładowo, użytkownik miecio znajduje się dowolnym katalogu (np. głównym) a chce
skopiować do swojego katalogu domowego plik o nazwie zdzisio.txt znajdujący się w
katalogu domowym użytkownika zdzisio. Miecio nie musi nawet pamiętać gdzie jest jego ani
Zdzisia katalog domowy. Wykonuje więc komendę:
$ cp ~zdzisio/zdzisio.txt ~/
$
6 Procesy
6 Procesy
6.1 Proces
Procesem nazywamy uruchomiony program (choć jest to uproszczenie). Dla rozróżnienia -
program nie uruchomiony jest po prostu plikiem przechowywanym na dysku. Dochodzimy więc do
stwierdzenia, że un*x zajmuje się nie tylko plikami, ale także procesami - nie wszystko jest
plikiem, część obiektów jest procesami. Prawie wszystkie komendy, jakie do tej pory ćwiczyliśmy
powodowały powstawanie nowych procesów.
Ale jak właściwie proces powstaje? Prześledzmy to (w uproszczeniu) na przykładzie komendy ls.
1. Komendę tę wpisujemy w shell'u. Jest on więc tzw. procesem macierzystym, ponieważ na
jego bazie powstaje nowy proces. A chyba nikt nie wątpi, że sam shell jest także
procesem? Przecież jest to uruchomiony program.
2. Po wprowadzeniu komendy ls shell tworzy w pamięci operacyjnej kopię samego siebie
wraz z tzw. środowiskiem. Do środowiska należą takie rzeczy jak zmienne oraz
informacje o prawach dostępu danego użytkownika.
3. Następnie shell zastępuje swoją kopię przez program ls. Powstaje w ten sposób nowy
proces ls. Jest to tzw. proces potomny shell'a.
4. Proces ten znajduje się w środowisku, w jakim umieścił go shell. Dziedziczy więc np.
wszystkie prawa (i ograniczenia), jakie posiada użytkownik uruchamiający komendę.
Każdy proces ma więc także swojego właściciela tak jak to jest w przypadku plików.
5. W tej chwili proces ls wykonuje się. Robi to, do czego został stworzony a więc przegląda
katalog i wyświetla na ekranie jego zawartość. W tym czasie shell czeka na jego
zakończenie. Czasem mówimy, że "śpi". To właśnie dlatego nie mamy w tym czasie
dostępu do linii poleceń i nie możemy nic napisać.
6. Po zakończeniu swojego działania kernel sygnalizuje shell'owi, że proces ls się już
skończył a następnie usuwa go z pamięci operacyjnej. Shell na ten sygnał się budzi i
prezentuje nam nowy znak dolara. Możemy wpisać następną komendę.
Zdarzają się jednak sytuacje wyjątkowe. Jeśli proces potomny się zakończy a macierzysty nie
zostanie o tym powiadomiony nazywamy go zombi (ang. zombie). Jeśli natomiast przed
zakończeniem procesu potomnego proces macierzysty zniknie to taki osierocony proces nazywamy
właśnie sierotą (ang. orphan). Takie przypadki destabilizują pracę systemu operacyjnego
(szczególnie zombi), co może powodować spowolnienie jego pracy. [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • absolwenci.keep.pl
  •