Darmowy fragment publikacji:
Szko‡a systemu Linux
Autorzy: Jerzy Kaczmarek, Agnieszka
Landowska, Micha‡ Wr(cid:243)bel
ISBN: 83-246-0767-6
Format: B5, stron: 320
Coraz wiŒksz„ popularno(cid:156)(cid:230) w (cid:156)wiecie oprogramowania zdobywaj„ produkty typu open
source z systemem operacyjnym Linux na czele. Dlaczego i Ty powiniene(cid:156) do‡„czy(cid:230) do
wci„¿ rosn„cej spo‡eczno(cid:156)ci u¿ytkownik(cid:243)w system(cid:243)w z tej rodziny? Poniewa¿ zapewniaj„
bezpieczne, stabilne oraz darmowe (cid:156)rodowisko pracy. DziŒki wielu dystrybucjom
systemu Linux zar(cid:243)wno pocz„tkuj„cy, jak i zaawansowani u¿ytkownicy mog„ wybra(cid:230)
produkt dostosowany do swych potrzeb.
Ksi„¿ka (cid:132)Szko‡a systemu Linux(cid:148) szybko wprowadzi CiŒ w (cid:156)wiat oprogramowania typu
open source. Poznasz liczne programy, kt(cid:243)re umo¿liwiaj„ miŒdzy innymi zarz„dzanie
danymi, pisanie i drukowanie dokument(cid:243)w czy korzystanie z sieci. Nauczysz siŒ u¿ywa(cid:230)
(cid:156)rodowiska graficznego oraz wiersza poleceæ. Dowiesz siŒ, jak dzia‡aj„ systemy
operacyjne, w tym Linux. Na p‡ycie do‡„czonej do ksi„¿ki znajduje siŒ jedna
z dystrybucji systemu Linux, cdlinux.pl, kt(cid:243)r„ mo¿esz uruchomi(cid:230) bezpo(cid:156)rednio z napŒdu
CD-ROM. DziŒki temu bŒdziesz m(cid:243)g‡ szybko i bezpiecznie wykona(cid:230) opisane (cid:230)wiczenia
oraz utrwali(cid:230) nabyt„ wiedzŒ.
(cid:149) Uruchamianie systemu Linux
(cid:149) Korzystanie z program(cid:243)w biurowych
(cid:149) Praca w (cid:156)rodowisku graficznym
(cid:149) Korzystanie z wiersza poleceæ
(cid:149) Aplikacje zwi„zane z internetem
(cid:149) System plik(cid:243)w i zarz„dzanie danymi
(cid:149) Programy multimedialne
(cid:149) Systemy zarz„dzania tre(cid:156)ci„ (Joomla! i Mambo)
(cid:149) Zarz„dzanie dyskami
(cid:149) Instalowanie systemu Linux
Poznaj system Linux dziŒki 40 prostym lekcjom
Wydawnictwo Helion
ul. Ko(cid:156)ciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treści
Wstęp .............................................................................................. 7
Rozdział 1. Wprowadzenie do systemów operacyjnych ...................................... 11
Lekcja 1. Budowa systemu komputerowego ................................................................... 11
Lekcja 2. Czym jest system operacyjny .......................................................................... 15
Lekcja 3. Różnorodność systemów operacyjnych ........................................................... 18
Lekcja 4. Cechy dystrybucji cdlinux.pl ........................................................................... 22
Rozdział 2. Rozpoczęcie pracy z systemem Linux .............................................. 27
Lekcja 5. Przygotowanie komputera do pracy z cdlinux.pl ............................................ 28
Lekcja 6. Uruchomienie dystrybucji cdlinux.pl .............................................................. 31
Lekcja 7. Uruchomienie środowiska graficznego ........................................................... 35
Lekcja 8. Praca ze środowiskiem graficznym ................................................................. 39
Uruchomienie programu i posługiwanie się oknem .................................................. 42
Praca z wieloma oknami i pulpitami ......................................................................... 43
Lekcja 9. Ręczna konfiguracja komputera ...................................................................... 45
Lekcja 10. Korzystanie z przeglądarki ............................................................................ 49
Otwarcie strony o znanym adresie ............................................................................ 52
Poszukiwanie informacji w sieci ............................................................................... 53
Lekcja 11. Konfiguracja i korzystanie z konta pocztowego ............................................ 55
Uruchomienie programu do obsługi poczty .............................................................. 57
Konfiguracja konta pocztowego ................................................................................ 57
Korzystanie z poczty ................................................................................................. 61
Wysyłanie listu .......................................................................................................... 62
Odbieranie poczty przychodzącej ............................................................................. 64
Usuwanie wiadomości z serwera pocztowego .......................................................... 65
Lekcja 12. Korzystanie z komunikatorów internetowych ............................................... 68
Konfiguracja komunikatora Kadu ............................................................................. 69
Rozmowa w programie Kadu .................................................................................... 71
Jabber — program Psi ............................................................................................... 74
Rozdział 3. Zarządzanie danymi ........................................................................ 79
Lekcja 13. System plików ............................................................................................... 79
Przeglądanie katalogów i podgląd plików w programie mc ..................................... 84
Kopiowanie, przenoszenie i usuwanie plików .......................................................... 85
Praca z grupą plików ................................................................................................. 86
Wyszukiwanie plików ............................................................................................... 87
Lekcja 14. Montowanie nośników danych ...................................................................... 88
Montowanie nośników danych .................................................................................. 91
4
Szkoła systemu Linux
Lekcja 15. Program do zarządzania plikami ................................................................... 93
Poruszanie się po drzewie katalogów ........................................................................ 94
Uruchamianie programów ......................................................................................... 95
Operacje na plikach i katalogach .............................................................................. 96
Organizacja pulpitu ................................................................................................... 98
Lekcja 16. Zapisywanie konfiguracji ............................................................................ 101
Zapis ustawień konfiguracyjnych ............................................................................ 103
Zmiany w zapisywanych ustawieniach ................................................................... 105
Wczytywanie zapisanych ustawień ......................................................................... 109
Rozdział 4. Biurowe i multimedialne programy użytkowe ................................. 111
Lekcja 17. Edytor tekstu OpenOffice.org Writer .......................................................... 112
Tworzenie prostego dokumentu .............................................................................. 113
Praca z plikiem zapisanym na dysku ....................................................................... 115
Formatowanie dokumentu ....................................................................................... 116
Zmiana formatu akapitu .......................................................................................... 117
Zmiana treści dokumentu ........................................................................................ 118
Dodawanie rysunków w dokumencie ..................................................................... 119
Konfigurowanie pasków narzędzi ........................................................................... 121
Lekcja 18. Drukowanie dokumentów ............................................................................ 122
Dodawanie drukarek ............................................................................................... 123
Drukowanie dokumentu w edytorze tekstu ............................................................. 124
Lekcja 19. Arkusz kalkulacyjny .................................................................................... 125
Tworzenie prostych tabel z obliczeniami ................................................................ 127
Podgląd wydruku i formatowanie wyglądu ............................................................ 129
Modyfikacja istniejącego arkusza ........................................................................... 131
Tworzenie wykresu ................................................................................................. 132
Lekcja 20. Program do tworzenia prezentacji ............................................................... 136
Wykonanie prezentacji ............................................................................................ 138
Formatowanie prezentacji ....................................................................................... 139
Lekcja 21. Programy do odtwarzania muzyki i filmów ................................................ 141
Program do odtwarzania muzyki ............................................................................. 142
Sterowanie multimedialnymi urządzeniami zewnętrznymi .................................... 144
Odtwarzanie pliku dźwiękowego ............................................................................ 145
Tworzenie listy odtwarzania ................................................................................... 147
Odtwarzanie muzyki z płyty Audio CD .................................................................. 148
Program do odtwarzania filmów ............................................................................. 149
Odtwarzanie pliku wideo ........................................................................................ 151
Odtwarzanie filmu z płyty DVD ............................................................................. 152
Lekcja 22. Programy do przeglądania i tworzenia grafiki ............................................. 153
Pobieranie zdjęć z aparatu cyfrowego ..................................................................... 154
Przeglądanie, obracanie i usuwanie zdjęć ............................................................... 156
Obróbka zdjęcia cyfrowego .................................................................................... 157
Wykonywanie zrzutów ekranu ................................................................................ 160
Rozdział 5. Praca z wierszem poleceń ............................................................. 163
Lekcja 23. Działanie wiersza poleceń ........................................................................... 164
Dodanie nowego użytkownika ................................................................................ 165
Praca z wieloma terminalami .................................................................................. 167
Lekcja 24. Organizacja pracy z wierszem poleceń ........................................................ 168
Uzyskanie informacji o użytkownikach .................................................................. 169
Wyświetlanie komunikatów na ekranie .................................................................. 169
Grupowanie poleceń ................................................................................................ 170
Spis treści
5
Uzupełnianie poleceń, ścieżek dostępu i nazw plików ........................................... 172
Historia poleceń ....................................................................................................... 173
Uzyskanie informacji o poleceniach ....................................................................... 174
Lekcja 25. Polecenia do zarządzania plikami ................................................................ 176
Wyświetlanie zawartości katalogu .......................................................................... 179
Zmiana praw dostępu .............................................................................................. 180
Tworzenie katalogów i plików ................................................................................ 182
Edycja pliku tekstowego ......................................................................................... 184
Kopiowanie oraz przenoszenie plików i katalogów ................................................ 185
Usuwanie plików i katalogów ................................................................................. 187
Lekcja 26. Kompresja i archiwizacja ............................................................................ 188
Kompresja plików ................................................................................................... 190
Dekompresja plików ............................................................................................... 191
Tworzenie kopii zapasowych .................................................................................. 191
Wybór plików do archiwizacji ................................................................................ 193
Rozdział 6. Zastosowania sieci Internet ......................................................... 195
Lekcja 27. Udostępnianie danych w sieci ........................................................................... 195
Udostępnianie stron internetowych ......................................................................... 197
Uruchomienie serwera Apache ............................................................................... 198
Zmiany konfiguracji serwera Apache ..................................................................... 200
Lekcja 28. Wymiana plików w sieci Internet ................................................................ 201
Uruchomienie serwera ssh w cdlinux.pl ................................................................. 202
Kopiowanie plików z wykorzystaniem SCP ........................................................... 203
Kopiowanie plików z wykorzystaniem FTP ........................................................... 204
Kopiowanie plików w trybie graficznym ................................................................ 206
Lekcja 29. Praca na zdalnych serwerach .......................................................................... 208
Praca zdalna w trybie tekstowym ............................................................................ 209
Praca zdalna w trybie graficznym ........................................................................... 210
Możliwości wykorzystania sieci Internet ................................................................ 212
Rozdział 7. Zarządzanie systemem z wiersza poleceń ...................................... 215
Lekcja 30. Polecenia do zarządzania procesami ........................................................... 216
Zarządzanie procesami ............................................................................................ 220
Zarządzanie wieloma procesami ............................................................................. 221
Standardowe strumienie procesów .......................................................................... 223
Mechanizm potoku .................................................................................................. 225
Lekcja 31. Przetwarzanie danych tekstowych ............................................................... 226
Poszukiwanie wierszy zawierających wzorzec ....................................................... 227
Przetwarzanie danych tekstowych .......................................................................... 229
Kontrola danych tekstowych ................................................................................... 232
Lekcja 32. Definiowanie środowiska pracy użytkownika ............................................. 234
Definicja synonimu polecenia ................................................................................. 234
Zmienne powłoki ..................................................................................................... 235
Definiowanie znaku zachęty ................................................................................... 236
Zmiany w środowisku pracy ................................................................................... 237
Rozdział 8. Zarządzanie systemem za pomocą skryptów ................................. 241
Lekcja 33. Pisanie i uruchamianie skryptów ................................................................. 242
Pierwszy skrypt ....................................................................................................... 242
Przykład skryptu do archiwizacji ............................................................................ 243
Korzystanie ze zmiennych w skryptach .................................................................. 244
Przekazywanie argumentów z wiersza poleceń ...................................................... 246
Skrypty systemu Linux ............................................................................................ 248
6
Szkoła systemu Linux
Lekcja 34. Programowanie w języku powłoki .............................................................. 250
Instrukcja warunkowa if .......................................................................................... 251
Instrukcja warunkowa case ..................................................................................... 254
Pętle while i until ..................................................................................................... 255
Użycie pętli for ........................................................................................................ 257
Definiowanie funkcji ............................................................................................... 258
Sprawdzanie poprawności parametrów wywołania ................................................ 258
Zasady pisania skryptów ......................................................................................... 261
Rozdział 9. Zarządzanie dyskami .................................................................... 265
Lekcja 35. Działanie dysków twardych ......................................................................... 265
Budowa dysku twardego ......................................................................................... 266
Uruchamianie systemu operacyjnego ...................................................................... 268
System plików ......................................................................................................... 270
Montowanie nośników trwałych ............................................................................. 271
Lekcja 36. Partycje dysków twardych ........................................................................... 273
Podział dysku twardego na partycje ........................................................................ 275
Tworzenie systemu plików na partycji .................................................................... 279
Zmiana rozmiaru partycji FAT/ext ......................................................................... 280
Zmiana rozmiaru NTFS .......................................................................................... 282
Lekcja 37. Tworzenie pamięci wymiany ....................................................................... 285
Tworzenie pliku wymiany ....................................................................................... 287
Tworzenie partycji wymiany ................................................................................... 289
Rozdział 10. Zaawansowane wykorzystanie cdlinux.pl ...................................... 293
Lekcja 38. Instalacja dystrybucji cdlinux.pl na dysku twardym ................................... 294
Instalacja cdlinux.pl na dysku ................................................................................. 295
Praca z systemem Linux zainstalowanym na dysku ............................................... 300
Lekcja 39. Instalacja dodatkowego oprogramowania ................................................... 301
Lekcja 40. Tworzenie własnej płyty cdlinux.pl ............................................................. 309
Skorowidz ................................................................................... 313
Rozdział 7.
Zarządzanie systemem
z wiersza poleceń
Najważniejszym zadaniem każdego systemu operacyjnego jest uruchamianie programów
użytkowych. Na komputerze można uruchamiać różnego rodzaju programy. Najczę-
ściej są to aplikacje, takie jak edytory, programy do odtwarzania plików multimedial-
nych, przeglądarki internetowe czy gry komputerowe. Inne specjalizowane programy
mogą umożliwiać zarządzanie bazami danych czy projektowanie domów. Programy
tego typu nie są bezpośrednio związane z pracą systemu operacyjnego — są jedynie
przez niego uruchamiane, kontrolowane i zarządzane.
Istnieje również liczny zbiór programów przeznaczonych do kontroli działania sys-
temu operacyjnego oraz do sterowania i zarządzania nim. Programy te służą do kon-
taktów użytkownika z systemem, do zarządzania plikami, procesami, pamięcią ope-
racyjną, dyskami i do kontroli funkcji systemu. Stanowią one integralną część systemu
operacyjnego i dlatego znajdują się w każdej dystrybucji systemu Linux. Wykony-
walne programy do zarządzania systemem operacyjnym są w systemie Linux uru-
chamiane z wiersza poleceń i dlatego często nazywa się je również poleceniami
powłoki.
W wierszu poleceń można wydać wiele rozkazów do zarządzania procesami, pli-
kami i innymi mechanizmami w systemie operacyjnym. Programy do zarządzania
systemem można przydzielić, w zależności od ich przeznaczenia, do następujących
kategorii:
(cid:141) zarządzanie użytkownikami: passwd, adduser, su,
(cid:141) zarządzanie procesami: ps, kill, bg, fg,
(cid:141) przetwarzanie tekstu: grep, egrep, wc, cut, diff, tr, sed,
(cid:141) definiowanie środowiska pracy: alias, unalias, umask,
(cid:141) operacje na plikach: chmod, touch, find,
(cid:141) zarządzanie systemem plików: cd, cp, ls, mv, rm, mkdir.
216
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
Nazwy podstawowych programów do zarządzania i komunikacji z systemem opera-
cyjnym są zawsze takie same we wszystkich systemach operacyjnych typu Linux lub
Unix. Ich możliwości mogą być jednak różne w zależności od ich wersji.
Programy do zarządzania systemem operacyjnym znajdują się między innymi w ka-
talogu /sbin, jednak aby je uruchomić, wystarczy w wierszu poleceń wpisać ich nazwę,
bez pełnej ścieżki dostępu. Jest to możliwe dzięki ustawieniom środowiska pracy
użytkownika, wśród których znajduje się zmienna wyznaczająca katalogi poszukiwa-
nia programów. Domyślnie w tej zmiennej znajduje się również katalog /bin. Dzięki
temu z punktu widzenia użytkownika programy do zarządzania systemem operacyj-
nym mogą być traktowane jako polecenia powłoki, ponieważ są przez nią poprawnie
interpretowane i wykonywane.
Dzięki programom do zarządzania systemem operacyjnym użytkownik może kontro-
lować system operacyjny i podejmować decyzje o stanie procesów, priorytetach ich
uruchamiania. Ma także możliwość rozwiązywania problemów, jakie mogą się pojawić
w trakcie pracy systemu operacyjnego.
Lekcja 30. Polecenia do zarządzania
procesami
Mechanizmy tworzenia procesów i zarządzania nimi należą do złożonych i trudnych
zagadnień w systemach operacyjnych. Ponieważ czasami dochodzi do zawieszenia
procesów w wyniku niepoprawnych działań użytkownika lub błędów w programach,
dlatego ważne jest zrozumienie, jak procesy powstają i działają.
Zarządzanie procesami w systemach operacyjnych bazuje na znanych z codzienności
metodach organizacji i zarządzania działaniem. Człowiek organizuje swoją pracę in-
tuicyjnie, rozróżniając rzeczy ważne i pilne oraz te mniej istotne. Jednak w przypadku
zarządzania dokonywanego przez system komputerowy brakuje intuicji i inteligencji
człowieka, dlatego programy do zarządzania procesami są bardzo złożone.
Jedną z analogii, która dobrze ilustruje zagadnienie zarządzania procesami, może być
czynność przygotowania posiłku. Żeby zrobić obiad, trzeba wykonać wiele czynności,
takich jak przygotowanie produktów, ich mycie, krojenie, gotowanie czy zmywanie
naczyń. Kolejność tych czynności nie zawsze może być dowolna. Najpierw trzeba
marchewkę obrać, a następnie dodać do zupy. Podobnie w systemie operacyjnym, żeby
wykonać pewne działanie, np. przetwarzanie danych, konieczne jest wykonanie wielu
czynności: otwarcie pliku, jego odczytanie, przekształcenie danych i zapis do pliku.
Za te czynności mogą odpowiadać różne, niezależne procesy i podobnie jak w przy-
padku gotowania pewne czynności muszą zostać wykonane w określonej kolejności.
W systemach operacyjnych za kolejność wykonywania procesów odpowiadają wy-
specjalizowane programy kolejkowania i szeregowania zadań.
Lekcja 30. Polecenia do zarządzania procesami
217
Jeżeli kucharz jest jeden, to musi dzielić swój czas pomiędzy różne czynności. W cza-
sie operacji krojenia, gdy występuje zdarzenie wymagające interwencji kucharza, np.
kipi zupa, trzeba przerwać krojenie i zamieszać w garnku. Jednak częste przełączanie
się między czynnościami powoduje, że czas ich realizacji znacznie się wydłuża. Gdy
czas przełączania się między czynnościami przekracza czas poświęcany na realizację
zadań, mamy do czynienia ze zjawiskiem nazywanym w systemach operacyjnych
szamotaniem. Czasem lepiej zakończyć jeden proces, aby rozpocząć drugi. W syste-
mach komputerowych odpowiednikiem kucharza jest procesor. To on odpowiada za
realizację procesów, pomiędzy którymi jest przełączany. Jednym z mechanizmów
szeregowania zadań jest przydzielanie kwantu (przedziału) czasu na realizację danego
procesu. Innym mechanizmem szeregowania zadań jest nadawanie procesom priory-
tetów, oznaczających ich ważność. Podobnie jak w przypadku gotowania — kipiąca
zupa przerywa inne czynności, np. krojenie. W systemach operacyjnych np. czynności
zarządzania procesami mają wyższy priorytet niż uruchomienie gry dla użytkownika.
Złożone algorytmy kolejkowania i zarządzania zadaniami zmierzają do eliminacji zja-
wiska szamotania.
Warto sobie uświadomić, że przy wszystkich procesach przygotowania potraw korzy-
stamy z tych samych zasobów: kuchni, mebli, oświetlenia, noży, śmietnika itp. Zasoby
te są współdzielone, tak jak kucharz, i również są przełączane pomiędzy procesami.
W systemie komputerowym współdzielony jest procesor, ale także pamięć operacyjna,
zasoby dyskowe i inne urządzenia. Należy podkreślić, że w systemie operacyjnym
w każdej chwili wykonywany jest tylko jeden proces, który na ten czas otrzymuje
wyłączny dostęp do wszystkich potrzebnych mu zasobów. Po zakończeniu kwantu
czasu procesor i inne zasoby są przekazywane do dyspozycji kolejnego procesu.
W przypadku gdy komputer ma jeden procesor, czynności zarządzania procesami
przebiegają inaczej niż w systemach wieloprocesorowych. Podobnie jak w przysłowiu:
„gdzie kucharek sześć, tam nie ma co jeść”, jeżeli procesorów jest wiele, to mamy do
czynienia z problemami współbieżności, współdzielenia zasobów i rozproszenia prze-
twarzania. Obsługa komputerów z wieloma procesorami przez system operacyjny jest
bardziej skomplikowana, jednak z punktu widzenia użytkownika takie maszyny są bar-
dziej wydajne i pozwalają na szybszą realizację złożonych i pracochłonnych zadań.
Kończąc te porównania, warto zdawać sobie sprawę, że podstawy algorytmów do za-
rządzania procesami w systemach operacyjnych mają swoje źródła w zarządzaniu czyn-
nościami życia codziennego.
W systemie operacyjnym może pracować jednocześnie wielu użytkowników, którzy
uruchamiają wiele różnych programów. Każdy z programów stanowi jeden lub więcej
procesów. Proces może działać w trybie użytkownika (ang. user mode) lub trybie
jądra (ang. kernel mode), z których ten ostatni ma wyższy poziom uprzywilejowania
w korzystaniu z czasu procesora oraz dostępu do pamięci. Każdy nowy proces ma
przypisany unikalny numer identyfikacyjny PID (ang. Process IDentificator). Numery
PID są nadawane w kolejności tworzenia procesów. Informacje o procesie zapisane są
w specjalnej strukturze nazywanej u-obszarem. Jest to zbiór danych zawierający takie
informacje, jak numer identyfikacyjny UID (ang. User ID) osoby, która proces utworzyła,
dane o terminalu użytkownika, bieżącym katalogu, plikach dostępnych dla procesu i wiele
innych.
218
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
Proces może znajdować się w następujących stanach: nowy, gotowy do uruchomienia,
aktywny (gdy przydzielono mu procesor) oraz zatrzymany, gdy czeka na wystąpienie
jakiegoś zdarzenia, na przykład na zakończenie działania innego procesu. Dane o wszyst-
kich uruchomionych w systemie procesach są zapisywane w specjalnej tablicy proce-
sów. Znajdują się w niej takie informacje, jak identyfikator właściciela, rozmiar pa-
mięci niezbędnej dla procesu oraz jego priorytet i stan. Na podstawie tych danych
system operacyjny podejmuje decyzję, który proces zostanie uruchomiony jako na-
stępny. Jeżeli proces nie zakończył się w ustalonym kwancie czasu, to zostanie prze-
rwany, zatrzymany i umieszczony w kolejce procesów oczekujących na wykonanie.
Mechanizm powstawania nowego procesu przebiega zawsze według pewnej procedury.
Nowy proces może powstać jedynie poprzez powielenie innego, już istniejącego proce-
su. Powielany proces nazywany jest macierzystym (a potocznie rodzicem), natomiast
nowo powstały proces — potomnym (potocznie dzieckiem).
Na rysunku 30.1 przedstawiono mechanizm powielenia i tworzenia procesów.
Rysunek 30.1. Powstawanie nowego procesu uruchomienia programu
Proces macierzysty wykonuje operację powielenia (ang. fork) i powstaje proces potom-
ny. Nowy proces otrzymuje własny identyfikator PID, a także zapamiętuje identyfikator
rodzica PPID (ang. Parent PID). Proces macierzysty zostaje zawieszony i czeka (ang.
wait) na zakończenie procesu potomnego. W procesie potomnym dochodzi do wyko-
nania (ang. exec) zawartego w nim kodu programu. Po zakończeniu (ang. exit) proces
Lekcja 30. Polecenia do zarządzania procesami
219
potomny przekazuje do rodzica informację o prawidłowości wykonania, tak zwany
kod wyjścia. Przy poprawnym wykonaniu procesu potomnego kod wyjścia jest liczbą
zero, a gdy proces zakończy się niepoprawnie, jest to liczba niezerowa. Kody wyjścia
można wykorzystywać do sterowania procesami i wysyłania komunikatów do użyt-
kownika o nieprawidłowościach w wykonywanych programach. Końcowym stanem
procesu potomnego jest stan zwany zombie, który oznacza, że proces już zakończył
działanie, ale jeszcze czeka, aby proces macierzysty odebrał stworzone przez niego dane
i kod wyjścia.
Przodkiem wszystkich procesów w systemie jest proces o nazwie init i identyfikato-
rze PID równym 1, który jest tworzony w momencie startu systemu operacyjnego.
Następnie uruchamiane są procesy obsługi sprzętu, a potem procesy logowania i identy-
fikacji użytkownika. Procesy te umożliwiają użytkownikowi zalogowanie się do sys-
temu operacyjnego. Po zakończeniu tej operacji dla użytkownika jest uruchamiany
proces powłoki. Proces pierwszej powłoki jest niezwykle ważny dla użytkownika,
ponieważ każdy uruchamiany przez niego program może zaistnieć w systemie jedynie
w wyniku jej powielenia. Powłoka staje się procesem macierzystym dla innych proce-
sów użytkownika.
Tak jak dziecko dziedziczy pewne cechy rodzica, tak proces potomny dziedziczy ce-
chy procesu macierzystego. Powielona powłoka przenosi do nowego procesu dane
o użytkowniku, jego terminalu, prawa dostępu do otwartych plików, informacje o śro-
dowisku pracy, zdefiniowane aliasy i inne. Uruchamianie programu poprzez powłokę
przypomina nieco inżynierię genetyczną, gdy do komórki macierzystej wprowadzamy
dane zmieniające nieznacznie wygląd organizmu. Nowy organizm będzie miał wiele
cech rodzica, ale też własne nowe cechy. Powielony proces powłoki staje się jakby
komórką macierzystą, do której wprowadzamy dodatkowe wiersze kodu programu,
który chcemy uruchomić. Tą czynność realizują funkcje fork i exec, czyli powiel
i wykonaj.
Zarządzanie procesami przez użytkownika polega nie tylko na ich tworzeniu, ale
również na ich zatrzymywaniu, uruchamianiu w określonym czasie i z określonym
priorytetem czy usuwaniu. Wśród poleceń i mechanizmów do zarządzania procesami
można wyróżnić:
(cid:141) ps — wyświetlanie listy uruchomionych procesów,
(cid:141) kill — usuwanie procesów,
(cid:141) jobs — wyświetlanie listy procesów wykonywanych w tle,
(cid:141) — uruchamianie procesu w tle,
(cid:141) | — przekazywanie danych z jednego do drugiego procesu,
(cid:141) nice — uruchamianie procesu z niskim priorytetem,
(cid:141) nohup — uruchamianie procesu, który będzie działał także po zakończeniu
sesji przez użytkownika.
220
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
Zarządzanie procesami
Użytkownik może kontrolować procesy, które zostały przez niego uruchomione. Staje
się to konieczne w sytuacji, gdy dochodzi do zawieszenia procesu lub gdy użytkownik
nie wie, jak program zakończyć. Zatrzymanie jednego z procesów może być wyni-
kiem błędu programu lub pomyłki użytkownika, jednak nie oznacza to, że system
operacyjny przestał funkcjonować poprawnie. System operacyjny Linux zawiesza się
niezwykle rzadko. Proces może być zawieszony, czyli czekać na zakończenie działa-
nia innego procesu lub na wystąpienie jakiegoś zdarzenia. Jednak w tym samym cza-
sie pozostali użytkownicy systemu mogą bez przeszkód realizować własne zadania.
W sytuacji zawieszenia procesu można za pomocą mechanizmów systemu operacyjne-
go wyeliminować go i powrócić do normalnej pracy.
W celu poznania mechanizmów zarządzania procesami wykonaj w trybie tekstowym
następujące kroki:
1. Zaloguj się do systemu i wyświetl uruchomione procesy, wpisując w wierszu
poleceń:
# ps
Polecenie ps wyświetla informacje o uruchomionych procesach. Wywołane
bez parametru wyświetla tylko procesy uruchomione na bieżącym terminalu
użytkownika. Zauważ, że pokazane są trzy procesy: proces logowania, proces
bieżącej powłoki oraz właśnie uruchomiony proces realizujący wydane
polecenie ps. Dwa pierwsze procesy istnieją dla każdego użytkownika na
każdym jego terminalu i umożliwiają wydawanie poleceń. Dla każdego
procesu, oprócz jego nazwy, podawany jest także numer PID oraz nazwa
terminalu, na którym został uruchomiony.
2. Uruchom edytor vim, wpisując w wierszu poleceń:
# vim plik1
Uruchomienie nowego programu powoduje utworzenie przez system operacyjny
nowego procesu użytkownika. Edytor vim ma duże możliwości i jest często
używany przez administratorów systemów operacyjnych do pracy w trybie
tekstowym. W tym trybie edytor zajmuje cały ekran i użytkownik nie ma
możliwości wydawania poleceń do systemu, ponieważ nie ma dostępu do
wiersza poleceń. Aby powrócić do wiersza poleceń, należy zakończyć proces
edycji poprzez naciśnięcie pewnej kombinacji klawiszy. Ta kombinacja klawiszy
nie jest intuicyjna i jeżeli użytkownik jej nie zna, bardzo trudno jest ją zgadnąć.
Dodatkowo edytor vim w trakcie edycji nie podpowiada sposobu jej zakończenia.
Istnieje nawet dowcip, mówiący o możliwości wygenerowania dowolnie długiego
losowego ciągu znaków przez użytkownika, który próbuje wyjść z programu
vim. Załóżmy, że nie jest znany sposób zakończenia pracy z edytorem vim.
3. Spróbuj zakończyć działanie programu vim, naciskając kombinację
klawiszy Ctrl+C.
Kombinacja ta umożliwia zazwyczaj przerwanie bieżącego procesu,
lecz w przypadku edytora vim jest ona nieskuteczna. W takiej sytuacji
jedną z dróg rozwiązania problemu jest usunięcie zawieszonego procesu.
Lekcja 30. Polecenia do zarządzania procesami
221
4. Przejdź do innego terminalu za pomocą kombinacji klawiszy Alt+F2. Zaloguj
się ponownie, używając tego samego konta użytkownika. Zauważ, że masz
do czynienia z sytuacją, w której system operacyjny działa poprawnie.
Brak możliwości wydawania poleceń na poprzednim terminalu wynika
z jego zablokowania przez jeden z procesów.
5. Wyświetl informacje o zalogowanych w systemie użytkownikach,
wpisując w wierszu poleceń:
# finger
Polecenie finger wydane bez parametrów umożliwia odczytanie informacji
o wszystkich terminalach, na których pracują zalogowani użytkownicy.
Z wyświetlonych informacji powinno wynikać, że jesteś użytkownikiem dwóch
terminali — jednego, na którym właśnie pracujesz, oraz drugiego, w którym
został uruchomiony edytor vim. Zauważ, że terminale w trybie tekstowym są
oznaczane nazwą tty z numerem nadawanym w kolejności ich uruchamiania.
W trybie graficznym oznaczenia terminali to pts/0, pts/1 i następne.
6. Wyświetl informacje o uruchomionych dotychczas procesach, wpisując
w wierszu poleceń:
# ps –t tty1
Polecenie ps z opcją –t wyświetla procesy uruchomione na terminalu, którego
nazwa została podana jako parametr. Na jednym z używanych terminali wśród
uruchomionych procesów znajduje się proces edytora vim. Odczytaj jego numer
identyfikacyjny PID wyświetlony w pierwszej kolumnie, np. 4269. Numer PID
zawieszonego procesu jest niezbędny przy jego usuwaniu.
7. Zamknij program edytora vim poprzez likwidację jego procesu. W tym celu
wpisz w wierszu poleceń:
# kill -9 4269
Polecenie kill (dosłownie: zabij) zamyka proces o numerze PID podanym
jako parametr wywołania. Polecenie to wywołane tylko z numerem procesu
bez opcji –9 umożliwia procesowi samodzielne zakończenie działania, dzięki
czemu możliwe jest np. zapisanie i zamknięcie plików tymczasowych.
Wywołanie polecenia kill z opcją –9 oznacza, że system operacyjny usunie
proces niezależnie od jego stanu i priorytetu.
8. Przejdź do terminalu, na którym był uruchomiony edytor, i sprawdź, czy
proces edytora został zakończony. Sprawdź listę procesów na terminalu
za pomocą polecenia ps. Zauważ, że procesu edytora nie ma już na tej liście.
Warto zapamiętać, że pracę w edytorze vim kończy wpisanie ciągu znaków
:q! i naciśnięcie klawisza Enter.
Zarządzanie wieloma procesami
Użytkownik ma możliwość pracy z wieloma procesami jednocześnie. Niekiedy za-
chodzi konieczność, żeby w trakcie pracy z jednym programem uruchomić inny czy
przejść do wiersza poleceń. Inne programy mogą być uruchamiane w tle, kiedy nie
222
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
zachodzi konieczność kontroli ich wykonania albo interakcji z użytkownikiem. W przy-
padku pracy z wieloma procesami będą one wykonywane w tle, co oznacza, że mogą
one działać jednocześnie, umożliwiając dalszą pracę w wierszu poleceń. Jednak istnieje
możliwość przełączenia się na dany proces w celu jego kontroli czy kontynuacji inte-
rakcji. Przełączanie się między procesami w trybie tekstowym jest podobne do pracy
z wieloma oknami w trybie graficznym. Tylko jedno okno może być w danym momen-
cie aktywne, a użytkownik ma możliwość przełączania się między oknami.
Aby pracować z wieloma procesami, wykonaj w trybie tekstowym następujące polecenia:
1. # sleep 300
Uruchom program sleep, który tworzy proces czekający przez podaną jako
parametr liczbę sekund. Dopiero po upływie zadanego czasu proces kończy
swoje działanie i umożliwia dalszą pracę w wierszu poleceń. Naciśnij klawisze
Ctrl+Z. Ta kombinacja klawiszy pozwala na zatrzymanie bieżącego procesu
i przejście do wiersza poleceń.
2. # fg
Polecenie fg (ang. foreground) umożliwia przywrócenie wykonywania
procesu, który został wcześniej zatrzymany. Polecenie to wywołane bez
parametru przywróci proces, który ostatnio został umieszczony w tle, czyli
proces programu sleep. Ponownie zatrzymaj ten proces za pomocą
kombinacji klawiszy Ctrl+Z.
3. # vim plik1
Uruchom edytor vim jako proces działający w tle. Znak jest poleceniem
dla powłoki, żeby poprzedzające go polecenie uruchomić w tle.
4. # man more
Uruchom jeszcze jeden proces w tle, np. wyświetlenie pomocy dla polecenia more.
5. # jobs
Polecenie jobs umożliwia wyświetlenie procesów uruchomionych w tle.
Przykładowy rezultat jego wykonania może wyglądać następująco:
[1]
[2] -
[3] +
Stopped
Stopped
Stopped
sleep 300
vim plik1
man more
Pierwsza kolumna zawiera numer procesu, którego można użyć przy
przywracaniu podglądu działania procesu. Druga kolumna zawiera znaki +
i – odpowiednio przy procesie na pierwszym i drugim planie. Na pierwszym
planie jest proces ostatnio przeniesiony w tło. Polecenie fg wywołane bez
parametrów uruchomi podgląd wykonania właśnie tego procesu. Trzecia
kolumna zawiera opis stanu procesu. Wyświetlone procesy są w stanie
zatrzymania (ang. stopped). W tym polu może się także pojawić wartość
Running (działający) dla procesów, które nie wymagają interakcji
z użytkownikiem. Ostatnia kolumna pokazuje nazwę programu i parametry
jego wywołania.
Lekcja 30. Polecenia do zarządzania procesami
223
6. # bg 1
Polecenie bg (ang. background) uruchamia w tle zatrzymany wcześniej
proces, którego numer podano jako parametr. Wydane z parametrem 1
oznacza, że wykonywanie procesu sleep zostało wznowione. Zauważ,
że ruchomienie procesu w tle oznacza, że wykonuje on swoje działania,
a użytkownik może w tym samym czasie wydawać kolejne polecenia
w programie powłoki. Uruchom ponownie polecenie jobs i zauważ, że stan
procesu sleep zmienił swoją wartość na Running. Po zakończeniu działania
proces sleep wyświetli na ekranie komunikat o zakończeniu pracy.
7. # fg 3
Polecenie fg przywraca działanie procesu. Wywołane bez parametru uruchomi
proces znajdujący się w tle na pierwszym planie (oznaczenie +). Wywołane
z numerem procesu przywraca podgląd jego działania, w podanym przykładzie
wyświetli rezultat działania polecenia man more. Zakończ procesy man i vim,
przełączając się na nie kolejno i zamykając programy. Procesy możesz też
usunąć, korzystając z poznanego polecenia kill. Poczekaj na samodzielne
zakończenie pracy przez proces sleep.
Standardowe strumienie procesów
Działanie każdego programu polega w pewnym sensie na przetwarzaniu danych, nie-
zależnie od tego, czy te dane pochodzą z pliku, czy z klawiatury użytkownika. Do
operacji przetwarzania konieczne są dane wejściowe oraz sposób prezentacji rezultatów.
Przekazywanie danych przypomina przepływ strumienia wody i dlatego w informatyce
mówi się o strumieniach danych. Każdy proces od chwili uruchomienia posiada
trzy strumienie danych — wejściowy, wyjściowy i strumień błędów.
Ideę procesu i standardowych strumieni wejściowych i wyjściowych pokazuje rysu-
nek 30.2.
Rysunek 30.2.
Proces i standardowe
strumienie
Każdy proces posiada standardowe wejście SI (ang. standard input), którym zwykle
jest klawiatura. Innymi strumieniami wejściowymi mogą być otwarte dla procesu pliki.
Standardowym wyjściem SO (ang. standard output) jest zwykle monitor, ale także
może to być plik. Każdy proces posiada również standardowy strumień błędów SE
(ang. standard error), za pomocą którego przekazywane są informacje o błędach
224
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
pojawiających się w trakcie trwania procesu. Komunikaty o błędach mogą pojawiać
się na monitorze i zaciemniać dane wyjściowe programu. Metodą eliminacji tego pro-
blemu jest przekazywanie komunikatów o błędach do specjalnego pliku. Wszystkie
strumienie procesu mają nadane tzw. deskryptory, które ułatwiają ich rozpoznawanie
przez system operacyjny. Deskryptory są to liczby całkowite, i tak strumień wejściowy
to 0, wyjściowy to 1, a strumień błędów to 2.
W systemie operacyjnym występuje mechanizm przekierowania strumieni danych wej-
ściowych i wyjściowych. Pozwala on na decydowanie, skąd pochodzą dane przeka-
zywane do procesu i gdzie mają być umieszczone po jego zakończeniu. Zmiana kie-
runku strumienia wejściowego realizowana jest przez (znak mniejszości), strumienia
wyjściowego realizowana jest przez (znak większości), a dopisanie danych do pliku
realizuje znak (dwa znaki większości).
W celu wykorzystania mechanizmu przekierowania wpisz w wierszu poleceń:
1. # cat plik1
Polecenie cat służy do przeglądania i łączenia plików, ale może także służyć
jako pseudoedytor.
Ze względu na to, że nie podano w poleceniu strumienia wejściowego,
standardowym wejściem jest klawiatura. Oznacza to, że znaki wpisywane przez
użytkownika na klawiaturze zostaną przekazane do polecenia cat. W kolejnych
wierszach wpisz po kilka znaków, niektóre z wierszy zacznij od litery s.
W trakcie pisania wiersze tekstu będą również widoczne na monitorze.
Znak oznacza przekierowanie strumienia wyjściowego do pliku o podanej
nazwie. Jeżeli plik wcześniej nie istniał, zostanie on utworzony. Wpisane
przez użytkownika wiersze tekstu zostaną zapisane w tym pliku. Działanie
polecenia cat może być zakończone klawiszami Ctrl+D. Podejrzyj zawartość
utworzonego pliku za pomocą polecenia more.
2. # cat plik1 plik2
W podanym poleceniu cat dzięki mechanizmowi przekierowania strumieniem
wejściowym jest plik plik1, a strumieniem danych wyjściowych — plik2.
Oznacza to, że zawartość jednego z plików zostanie bez modyfikacji
przepisana do drugiego pliku. Sprawdź za pomocą polecenia more rezultat
wykonania operacji.
3. # cat plik2
W podanym poleceniu standardowym wejściem dla procesu cat ponownie
jest klawiatura, natomiast standardowym wyjściem — plik2. Użycie podwójnego
znaku większości oznacza, że wpisywane z klawiatury dane nie zastąpią
dotychczasowych danych w pliku, ale zostaną dopisane na jego końcu.
Wpisz kilka wierszy tekstu, niektóre zaczynając od litery s, zakończ edycję
i sprawdź zawartość pliku za pomocą polecenia more.
4. # cat plik4
Wywołaj polecenie cat, podając jako parametr nieistniejący plik. Zauważ
pojawiający się komunikat o błędzie. Komunikaty o błędach mogą być
Lekcja 30. Polecenia do zarządzania procesami
225
wyświetlane pomiędzy danymi wyjściowymi procesu, co zmniejsza czytelność
wyników. Dlatego niekiedy wyświetlanie komunikatów o błędach nie jest
pożądane.
5. # cat plik4 2 /dev/null
Aby zablokować wyświetlania komunikatów o błędach na ekranie, należy je
przekierować do pliku. Jedną z możliwości jest ich przekierowanie do pliku
/dev/null, w którym wszystkie dane giną. Zauważ, że w poleceniu posłużono
się numerycznym deskryptorem standardowego strumienia błędów (cyfra 2).
Mechanizm potoku
Aby wykonać złożone przetwarzanie danych, niekiedy konieczne staje się urucho-
mienie wielu procesów, z których kolejny wykorzystuje rezultaty pracy poprzednika.
Wówczas dane wyjściowe pierwszego procesu powinny być przekazane do drugiego
procesu jako jego dane wejściowe. Tę operację realizuje mechanizm zwany potokiem
(ang. pipeline), oznaczany znakiem | (pionowej linii). Działanie mechanizmu potoku
ilustruje rysunek 30.3.
Rysunek 30.3.
Mechanizm potoku
Działanie mechanizmu potoku polega na przekierowaniu strumienia wyjściowego
jednego z procesów, np. procesu grep, na wejście innego procesu — w pokazanym
przykładzie sort. Polecenie grep odczytuje wskazany plik wiersz po wierszu i pozo-
stawia tylko te z wierszy, które pasują do wzorca — w pokazanym przykładzie za-
czynają się od litery s. Wybrane wiersze pliku są następnie przekazywane do innego
procesu wykonującego polecenie sort, które porządkuje wiersze rosnąco lub malejąco.
Standardowym wyjściem tego polecenia jest monitor, na którym zostanie wyświetlony
rezultat działań obu procesów.
Mechanizm potoku jest powszechnie używany do łączenia poleceń i wykonywania
złożonych operacji przetwarzających dane.
226
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
W celu wykorzystania mechanizmu potoku wpisz w wierszu poleceń:
1. # ps –u root
Polecenie ps z parametrem –u wyświetla wszystkie procesy uruchomione
przez użytkownika o podanej nazwie, w tym przypadku root. Użytkownik ten
ma wiele procesów, których lista może nie zmieścić się na jednym ekranie.
Aby zobaczyć wszystkie wartości, należy skorzystać z mechanizmu potoku.
2. # ps –u root | more
W podanym poleceniu rezultat wykonania komendy ps został przekierowany
do polecenia more, które umożliwia stronicowanie wyświetlanego tekstu. Zwróć
uwagę, że teraz jest widoczny proces init o numerze PID równym 1. Poprzednio
był on niewidoczny. Przewiń listę procesów za pomocą klawisza Spacja.
3. # grep ^s plik2 | sort
Podane polecenie jest związane z przykładem umieszczonym na rysunku 30.3.
Polecenie grep służy do filtrowania tekstów. Z podanego pliku wejściowego
odczytuje kolejne wiersze i na wyjściu pozostawia tylko te, które są zgodne
ze wzorcem. Podany wzorzec ^s oznacza, że pierwszym znakiem wiersza
powinna być litera s.
Poprzez mechanizm potoku dane wyjściowe procesu grep zostaną przekazane
do procesu sort. Polecenie sort służy do porządkowania wierszy w kolejności
alfabetycznej czy numerycznej.
4. # grep ^s plik2 | sort –r | more
Mechanizmu potoku można użyć wielokrotnie, tworząc złożone ciągi operacji
przetwarzania danych. Wynik działania polecenia grep jest przekazany do
programu sort, który dzięki opcji wywołania –r posortuje dane malejąco.
Zauważ, że dane te zostały przekazane do polecenia more poprzez kolejny
mechanizm potoku.
Najczęściej polecenia do zarządzania procesami przydają się w sytuacji zawieszenia
jednego z procesów, gdy zachodzi konieczność jego zatrzymania. Jednak zaawansowane
działania, takie jak zarządzanie serwerami czy obliczeniami numerycznymi, wymagają
umiejętności nadzorowania stanu procesów czy wykonywania procesów w tle.
Lekcja 31. Przetwarzanie
danych tekstowych
Konfiguracja systemu operacyjnego i programów zapisywana jest w plikach teksto-
wych. Są one przeznaczone do zapisu ustawień programów użytkowych, serwerów
usług lub zawierają informacje o aktualnym stanie systemu operacyjnego i środowiskach
użytkowników. Dzięki zapisywaniu parametrów działania systemu w plikach jest możliwe
odtworzenie tej samej konfiguracji przy każdorazowym uruchomieniu systemu. W trakcie
Lekcja 31. Przetwarzanie danych tekstowych
227
prac administracyjnych często występuje konieczność znalezienia określonej informacji
o systemie i jego konfiguracji zapisanej w pliku tekstowym. Niekiedy zachodzi także
konieczność dokonania zmiany zapisanych danych.
Plik tekstowy z danymi konfiguracyjnymi oraz inne pliki tekstowe są zbiorem znaków,
które są podzielone na wiersze o różnej długości. Każdy wiersz kończy się specjal-
nym znakiem. Przetwarzanie plików tekstowych w systemie Linux zawsze opiera się
na operacjach na poszczególnych wierszach. Również praca powłoki polega na inter-
pretowaniu poleceń zapisywanych w wierszach. To wiersz jest interpretowany, wyko-
nywany, wyświetlany, zapisywany, a także może być przetwarzany przez programy.
W dystrybucjach systemu Linux znajdują się liczne programy do wykonywania zło-
żonych operacji przetwarzania danych tekstowych; programy te można pogrupować
według realizowanych przez nie funkcji:
(cid:141) wyświetlanie zawartości pliku — more, tail, head, less,
(cid:141) filtrowanie wierszy wg wzorca — grep, egrep, fgrep,
(cid:141) zliczanie słów i wierszy — wc, nl, du,
(cid:141) przetwarzanie treści wierszy — cut, tr, sed, awk,
(cid:141) sortowanie wierszy — sort, uniq,
(cid:141) łączenie i rozłączanie — cat, join, split, csplit,
(cid:141) porównywanie zawartości plików — cmp, comm, diff.
Niektóre z tych programów mają bardzo duże możliwości przetwarzania plików tek-
stowych, jednak ich zastosowanie jest niekiedy skomplikowane. Są one wykorzysty-
wane przy pracach administracyjnych.
Poszukiwanie wierszy zawierających wzorzec
Przy wyszukiwaniu informacji w plikach tekstowych często stosuje się program o na-
zwie grep. Program ten filtruje dane, analizując każdy wiersz i pozostawia tylko te
z nich, które spełniają warunek zdefiniowany w formie wzorca, podany jako parametr
wywołania. Wzorzec może być podany w wierszu poleceń, jak również może być po-
bierany z pliku, w którym można umieścić wiele różnych wzorców. Wzorzec może
być ciągiem znaków, jak również wyrażeniem regularnym, definiującym pewne zbiory
danych tekstowych. Istnieje również polecenie egrep, które pozwala na stosowanie
rozszerzonych wyrażeń regularnych. Wywołanie tego polecenia jest równoznaczne
z użyciem w poleceniu grep opcji –E.
Wzorzec może być wyrażeniem, w którym znaki specjalne mają określone znaczenia,
na przykład:
(cid:141) ala — poszukiwany jest podany ciąg znaków;
(cid:141) a.a — znak kropki zastępuje jeden dowolny znak, w tym przypadku poszukiwany
jest ciąg zaczynający i kończący się literami a, pomiędzy którymi będzie jeden
znak (litera albo nawet cyfra);
228
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
(cid:141) a.* — znak gwiazdki oznacza powtórzenie znaku poprzedzającego dowolną
liczbę razy, w tym przypadku poszukiwane są słowa zawierające ciąg znaków
zaczynający się literą a;
(cid:141) [aeiouy] — w nawiasie kwadratowym podaje się zbiór poszukiwanych znaków,
np. listę samogłosek;
(cid:141) [a–zA–Z] — w nawiasie kwadratowym można podać także zakres poszukiwanych
znaków, np. wszystkie wielkie i małe litery;
(cid:141) ^a — po znaku ^ podaje się ciąg znaków, który musi wystąpić na początku
wiersza, np. literę a;
(cid:141) a$ — przed znakiem $ podaje się ciąg znaków, który musi wystąpić na końcu
wiersza, np. literę a.
Za pomocą wyrażeń regularnych ze znakami specjalnymi można opisać ciągi znaków
i ich zbiory. Można stosować także pewne kombinacje poszczególnych znaków spe-
cjalnych, co pozwala na wyrażenie bardzo złożonych zależności między słowami czy
znakami w pliku tekstowym. Wzorce mogą być stosowane w większości poleceń
działających na danych tekstowych. Pozwalają one na wybieranie z dużych plików
tekstowych jedynie tych treści, które interesują użytkownika. Najczęściej wzorców
używa się w połączeniu z poleceniem grep.
Polecenie grep posiada kilka opcji wywołania, z których najważniejsze to:
(cid:141) -v — pozostawienie wierszy niepasujących do wzorca,
(cid:141) -c — podanie liczby wierszy pasujących do wzorca,
(cid:141) -n — ponumerowanie znalezionych wierszy,
(cid:141) -w — pozostawienie wierszy, w których są całe słowa, a nie ciągi znaków,
pasujące do wzorca,
(cid:141) -i — eliminacja rozróżnienia małych i wielkich liter,
(cid:141) -l — podanie tylko nazw plików zawierających wiersze pasujące do wzorca,
(cid:141) -E — włączenie rozszerzonych wyrażeń regularnych (egrep).
Polecenie grep pozwala na zmniejszenie ilości danych przekazywanych przez pro-
gramy kontrolujące system poprzez ich przefiltrowanie i wyświetlenie tylko tych
wierszy, które zawierają interesujące dla użytkownika informacje. Poleceniem grep
można się posłużyć, aby uzyskać czytelny rezultat działania programów przetwarza-
jących dane tekstowe.
W celu poznania możliwości polecenia grep wpisz w wierszu poleceń:
1. # ls /bin
Polecenie ls wyświetli listę programów systemowych zapisanych w katalogu
/bin. Zauważ, że lista ta jest obszerna, a szukanie w niej jednego z programów
może być długotrwałe.
Lekcja 31. Przetwarzanie danych tekstowych
229
2. # ls /bin | grep y
Rezultat działania polecenia ls poprzez mechanizm potoku zostanie przekazany
jako strumień wejściowy do polecenia grep. Jako wzorzec w poleceniu grep
podano literę y, co oznacza, że jedynie polecenia, których nazwa zawiera tę
literę, zostaną wyświetlone. W podobny sposób można szukać określonych
ciągów znaków i całych wyrazów.
3. # ls /bin | grep ^[s-w]
Jako parametr polecenia grep można podać zbiory poszukiwanych liter
z wykorzystaniem nawiasów kwadratowych. Dodatkowy znak specjalny ^
w wyrażeniach regularnych oznacza początek wiersza. Jako wynik polecenia
zostaną wyświetlone wszystkie nazwy plików z katalogu /bin które zaczynają
się na litery s, t i kolejne do w.
4. # ls /bin | grep -i [ouy]$
Znak specjalny $ w wyrażeniu regularnym oznacza koniec wiersza. W nawiasie
kwadratowym podano zbiór liter, które wchodzą w skład wzorca. Rezultatem
wydanego polecenia będzie wyświetlenie plików, których nazwa kończy się
jedną z podanych samogłosek: o, u lub y. Wywołanie polecenia grep z opcją
–i powoduje, że podczas poszukiwania wielkie i małe litery nie są rozróżniane.
Tak samo zadziała polecenie bez opcji, ale ze wzorcem [ouyOUY].
5. # ls -l /dev | wc -l
Polecenie wc w zależności od zastosowanej opcji służy do zliczania
poszczególnych elementów zawartości pliku. Opcja –l (ang. line) oznacza
zliczanie wierszy, –w (ang. word) — słów, a opcja –c (ang. character)
— znaków. Danymi wejściowymi może być zawartość pliku tekstowego,
ale także rezultat wykonanego polecenia przekazany na standardowe wejście
procesu wc. Ponieważ polecenie ls z opcją –l wyświetla dane o każdym pliku
i katalogu w oddzielnym wierszu, przekazanie rezultatu do polecenia wc
zliczającego wiersze pozwoli na podanie liczby plików i katalogów w danej
lokalizacji. Zwróć uwagę, że katalog ten zawiera dużą liczbę elementów.
6. # ls -l /dev | grep ^d | wc -l
Polecenie ls wywołane z opcją –l wyświetla dla każdego elementu w podanej
lokalizacji pełną o nim informację, w której znajduje się także typ pliku. Typ
jest oznaczany jedną literą umieszczoną na początku wiersza dotyczącego
danego pliku, np. litera d oznacza katalogi. Wykorzystując tę zasadę, można
za pomocą polecenia grep wyświetlić jedynie wiersze zawierające wybrany
typ plików. W rezultacie wydanego polecenia zostanie podana liczba katalogów
w wybranej lokalizacji.
Przetwarzanie danych tekstowych
Dane tekstowe zawarte w plikach mogą być wyświetlane za pomocą takich poleceń,
jak cat, less czy more. Jednocześnie istnieje możliwość ręcznej edycji danych w edyto-
rach tekstu, takich jak nano czy vim. Jednak niekiedy zachodzi konieczność automa-
tycznego przetwarzania plików, gdy ręczne ich przeszukiwanie i poprawianie byłoby
230
Rozdział 7. ♦ Zarządzanie systemem z wiersza poleceń
nieefektywne. Czasem modyfikacje polegają na zmianie jednej litery tekstu w wielu
wierszach pliku. Przetworzenie dużych plików przez użytkownika może być praco-
chłonne, a w niektórych przypadkach — wręcz niewykonalne. Zmiany tego rodzaju
mogą zostać wykonane automatycznie przez przeznaczone do tego celu programy, takie
jak cut, tr czy sed.
W niektórych przypadkach plik tekstowy posiada własną wewnętrzną strukturę, dzieli
się na wiersze, słowa i kolumny. Wiersze są rozpoznawane dzięki kończącemu je spe-
cjalnemu znakowi końca wiersza. Słowo to ciąg znaków niepodzielony spacją lub in-
nym znakiem specjalnym. Wyróżnienie kolumn występuje zazwyczaj jedynie w plikach
generowanych automatycznie przez określone programy i wówczas poszczególne
kolumny zawierają zawsze te same informacje i znajdują się w wierszu w tej samej
kolejności, a oddzielone są od siebie znakiem specjalnym. Taką postać często mają
pliki z zapisem ustawień systemu operacyjnego. Również polecenia systemowe często
zwracają dane w postaci uporządkowanej w wiersze i kolumny. Gdy znana jest struktura
danych, programy do przetwarzania mogą dokonywać zmian automatycznie. Doko-
nane w strumieniu wejściowym zmiany mogą być zapisane do plików wynikowych.
Całość działania programu może przebiegać bez ingerencji użytkownika i bez wy-
świetlania jakichkolwiek komunikatów na ekranie.
W celu przetworzenia wybranych danych tekstowych wpisz w wierszu poleceń:
1. # cat /etc/passwd
Program cat odczyta zawartość pliku /etc/passwd i wyświetli ją na monitorze.
Plik /etc/passwd pełni bardzo ważną rolę w pracy systemu operacyjnego,
ponieważ zawiera informacje o użytkownikach. W każdym wierszu znajdują
się kolejno: nazwa użytkownika, jego hasło, numer UID, numer GID, imię
i nazwisko, katalog domowy oraz zdefiniowana powłoka. Zauważ, że plik ten
ma ściśle określoną strukturę, a poszczególne kolumny oddzielone są znakiem
dwukropka. Zwróć uwagę, że zamiast hasła wyświetlany jest znak x, który oznacza,
że hasła zostały zaszyfrowane i zapisane w oddzielnym pliku /etc/shadow. Taki
sposób zapisu haseł jest obecnie ze względów bezpieczeństwa powszechnie
stosowany w systemach operacyjnych Linux.
2. # cat /etc/passwd | cut -d : -f 1,6
Jeżeli chcesz wyświetlić wybrane informacje, np. tylko nazwę użytkownika
i jego katalog domowy, możesz posłużyć się poleceniem cut. Program cut
pozwala na wycięcie pewnego fragmentu z wierszy tekstu. Potrafi operować
na wierszach i kolumnach analizowanego tekstu. W poleceniu cut za pomocą
opcji –d definiuje się, jaki znak oddziela poszczególne kolumny. W przypadku
pliku /etc/passwd jest to znak dwukropka. Opcja –f pozwala na wybranie kolumn,
które mają być wyświetlane. Zauważ, że w wydanym poleceniu znajduje się
wywołanie dwóch programów o nazwach cut i cat. Mimo podobnej pisowni
oba programy realizują zupełnie inne zadania. Odczytywana za pomocą polecenia
cat zawartość pliku /etc/passwd jest przekazywana za pomocą mechanizmu
potoku na wejście programu cut. W rezultacie zostaną wyświetlone jedynie
kolumny pierwsza i szósta, w których znajdują się nazwa użytkownika i nazwa
Lekcja 31. Przetwarzanie danych tekstowych
231
jego katalogu domowego. Polecenie cut posiada liczne opcje, które umożliwiają
definiowanie skomplikowanych warunków, określających, jakie dane mają
zostać wyświetlone, a jakie wycięte.
3. # cat /etc/passwd | cut -d : -f 1,6 | tr :
Dane zapisane w plikach systemowych mają często mało czytelną postać.
Dlatego oprócz wycinania niepotrzebnych kolumn można zamienić jeden
znak specjalny na inny. W rezultacie wykonania polecenia znak dwukropka
zostanie zamieniony na znak spacji za pomocą polecenia tr.
4. # cat /etc/passwd | cut -d : -f 1,6 | tr [a-z] [A-Z]
Polecenie tr pozwala również na zamianę grup znaków. W tym przypadku
wszystkie małe litery zostaną zamienione na wielkie. Zauważ, że dokonywane
zmiany są widoczne w postaci informacji wyświetlanych na ekranie. Zawartość
pliku /etc/passwd nie ulega zmianie. Aby zapisać zmiany, konieczne jest
jawne przekierowanie danych do pliku o określonej nazwie. Polecenie tr ma
ograniczone możliwości — zamienia jedynie pojedyncze znaki. Aby zamienić
cały ciągów znaków, konieczne jest posłużenie się poleceniem sed.
5. # cat /etc/passwd | cut -d : -f 1,6 | sed s/:/ ma katalog domowy /
Program sed umożliwia zaawansowane przetwarzanie wierszy tekstu
z wykorzystaniem wyrażeń regularnych. Działanie programu polega na
pobieraniu wierszy jeden po drugim i przetwarzaniu jego treści zgodnie ze
zdefiniowanymi operacjami i wzorcami. Jedną z operacji realizowanych przez
program jest zamiana pewnego ciągu znaków na inny. Jest to możliwe dzięki
operacji zamiany oznaczonej literą s, której użycie wymaga podania polecenia
w postaci: s/ciąg początkowy/ciąg docelowy/. W rezultacie wykonania
polecenia znak dwukropka oddzielający kolumny w pliku /etc/passwd
zostanie zastąpiony zwrotem ma katalog domowy.
6. # cat /etc/passwd | cut -d : -f 1,6 | sed -e s/^/Użytkownik /
-e s/:/ ma katalog domowy /
Gdy w jednym wierszu danych konieczne jest dokonanie kilku
Pobierz darmowy fragment (pdf)