1. system operacyjny linux - tuchowski.uek.krakow.pltuchowski.uek.krakow.pl/files/ie/linux.pdf ·...

51
1 Kierunek: Informatyka i Ekonometria Przedmiot: Informatyka ekonomiczna Forma zajęć: Ćwiczenia Temat: Systemy operacyjne. System Linux 1. System operacyjny Linux 1.1. Systemy operacyjne w laboratoriach CI UEK w Krakowie SO: Novell Netware SO: MS Windows SO: MS Windows SO: MS DOS SO: MS Windows SO: MS Windows SO: MS DOS SO: Linux INTERNET Rys. 1. Systemy operacyjne w Centrum Informatyki UEK w Krakowie Microsoft Windows, Microsoft DOS, Novell Netware, Linux.

Upload: vukhanh

Post on 28-Feb-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

1

Kierunek: Informatyka i Ekonometria Przedmiot: Informatyka ekonomiczna Forma zajęć: Ćwiczenia Temat: Systemy operacyjne. System Linux

1. System operacyjny Linux

1.1. Systemy operacyjne w laboratoriach CI UEK w Krakowie

SO: Novell Netware

SO: MS Windows

SO: MS Windows

SO: MS DOS

SO: MS Windows

SO: MS Windows

SO: MS DOS

SO: Linux

INTERNET

Rys. 1. Systemy operacyjne w Centrum Informatyki UEK w Krakowie

• Microsoft Windows,

• Microsoft DOS,

• Novell Netware,

• Linux.

2

1.2. Historia systemu operacyjnego Linux

Podstawowe warunki i przyczyny powstania systemu operacyjnego Linux:

• wąskie i specjalistyczne grono użytkowników systemów uniksowych,

• szybki rozwój Internetu na początku lat dziewięćdziesiątych,

• powstanie procesora Intel 80386 umożliwiającego pracę wielozadaniową,

• napisanie przez Linusa Torvaldsa programów dla systemu operacyjnego

Minix oraz jądra nowego systemu operacyjnego (opartego na Miniksie),

• ogłoszenie przez Tornvaldsa na grupie dyskusyjnej comp.os.minix

(sierpień 1991) prac nad bezpłatnym systemem dla komputerów PC,

• dostosowanie systemu Linux do norm POSIX pozwalające na

przenoszenie oprogramowania pomiędzy Linuksem a komercyjnymi

systemami uniksowymi,

• opracowanie Linuksa na podstawie licencji GNU GPL (GNU General

Public Licence) fundacji FSF (Free Software Fundation),

• pojawienia się różnych dystrybucji Linuksa, (np. Slackware, RedHat,

Debian, SuSE, Mandrake).

3

1.3. Praca zdalna z serwerem linuksowym

• system operacyjny (SO) to program lub zbiór programów służących do

zarządzania pracą komputera,

• Linux jest systemem wielozadaniowym i wielodostępnym,

• wielozadaniowość to tryb pracy systemu operacyjnego, w którym

użytkownik może uruchomić w tym samym czasie więcej niż jedno

zadanie,

• wielodostęp to tryb pracy systemu operacyjnego, w którym w tym samym

czasie więcej niż jeden użytkownik może pracować z systemem i

korzystać z jego zasobów,

• równoczesna praca z systemem odbywa się za pomocą komputerów

pełniących funkcje tzw. terminali,

Komputer pracujący w trybie wielodostepnym

Terminale

Rys. 2. Schemat pracy z systemem wielodostępnym

4

• użytkownik, który chce pracować z systemem Linux, musi mieć do tego

odpowiednie uprawnienia,

• weryfikacja uprawnień odbywa się poprzez sprawdzenie znajomości

nazwy użytkownika (tzw. login) i hasła,

• użytkownik może korzystać wyłącznie z zasobów systemu, do których

ma nadane prawa,

• kontrolę nad całym systemem sprawuje administrator, tzw. root,

• praca z serwerem odbywa się zazwyczaj w trybie tekstowym, jako tzw.

praca zdalna, czyli praca na odległość za pomocą odpowiedniego

programu emulującego terminal,

• praca zdalna w trybie tekstowym może być realizowana za pomocą

protokołu telnet lub ssh,

• do pracy zdalnej z zastosowaniem protokołu ssh mogą być

wykorzystywane różne programy, np. CRT, SSh32, PuTTY.

System Operacyjny: Linux Serwer: ie.ae.krakow.pl System Operacyjny:

MS Windows

Emulacja terminala: program PuTTY

dane przesyłane zgodnie z protokołem ssh

Rys. 3. Praca zdalna z serwerem linuksowym

5

1.4. Praca zdalna z wykorzystaniem programu PuTTY

1. Uruchomienie program PuTTY:

2. Podanie nazwy serwera (np. ie.uek.krakow.pl) w polu Host Name (or IP

address) oraz wybranie protokołu SSH:

3. W razie konieczności skonfigurowanie ustawienia programu (np.

wielkość i krój czcionki, kolor tła itp.) poprzez skorzystanie z kategorii

Window/Appearance:

6

4. Naciśnięcie przycisku Open.

5. Podanie nazwy użytkownika (login as:) i hasła (password:):

Podczas pracy można wydawać polecenia i uruchamiać programy, np.:

• wyświetlić listę użytkowników zalogowanych w systemie:

$ finger

7

• zmienić swoje hasło:

$ passwd po wydaniu tego polecenia użytkownik zostanie poproszony o podanie bieżącego (starego) hasła

Changing password for nowakj Old password:

następnie zostanie poproszony o podanie nowego hasła i jego powtórne wprowadzenie (potwierdzenie).

New password: W celu zakończenia pracy z serwerem należy wydać polecenie:

$ logout

8

2. System plików

System plików jest to sposób zapisu logicznej struktury danych (tzn. plików

oraz katalogów) na fizycznym nośniku, tzn.:

System plików = zbiór plików + sposób ich uporządkowania.

Pliki, jako podstawowe jednostki logiczne systemu plików:

• służą do przechowywania programów (rozkazów dla procesora) i danych

(np. znaków, liczb, wierszy tekstu),

• są przechowywane na nośnikach danych (np. dyskach twardych, dyskach

optycznych, pamięciach flash),

• mają strukturę ustaloną przez ich twórcę,

• posiadają swoją nazwę oraz atrybuty (np. rozmiar, datę i czas utworzenia,

prawa dostępu),

• są zarządzane przez system operacyjny w sposób zgodny z wymaganiami

i możliwościami systemu plików.

Rodzaje systemów plików:

• liniowy - wszystkie pliki umieszczane są w jednym katalogu,

• drzewiasty (hierarchiczny) - występują katalogi mogące zawierać pliki i

podkatalogi, w których także mogą znajdować się pliki lub podkatalogi

niższego poziomu.

9

Funkcje systemu operacyjnego w zakresie zarządzania systemem plików:

• przydział miejsca na nośniku (dysku, dyskietce) dla systemu plików oraz

ewidencja zajętych i wolnych obszarów nośnika,

• określenie sposobu uporządkowania plików i organizowanie do nich

dostępu zgodnie z wymogami i możliwościami systemu plików,

• wykonywanie operacji na plikach, np. kopiowanie, przesuwanie,

kasowanie, zmiana nazwy itp.

/

bin dev home ... etc

katalog główny

katalogi systemowe

katalogi domowe basia krysia janek

public_html grafika raporty

...

katalogi użytkowników

Rys. 4. Schemat struktury katalogów w Linuksie

W systemie plików Linuksa:

• struktura katalogów jest na ogół ściśle określona, tzn. katalog:

− /bin - zawiera niezbędne do funkcjonowania systemu programy,

− /boot - zawiera jądro systemu i pliki startowe,

− /dev - zawiera urządzenia (widziane, jako pliki, np. /dev/hda1 - dysk

twardy, /dev/fd0 - stacja dyskietek),

− /etc - zawiera pliki konfiguracje systemu,

10

− /home - zawiera katalogi domowe użytkowników,

− /lib - zawiera m.in. biblioteki systemowe i ładowalne moduły jądra,

− /lost+found - zawiera odzyskane pliki,

− /mnt - zawiera zamontowane systemy plików innych urządzeń (np.

dyskietki, CD-ROM-u),

− /proc - zawiera tzw. pliki statusu jądra, urządzeń i procesów,

− /root - jest to katalog domowy administratora,

− /sbin - zawiera programy wykorzystywane przez administratora do

zarządzania i konfigurowania systemu,

− /tmp - zawiera pliki tymczasowe tworzone przez różne programy

podczas ich pracy,

− /usr - zawiera programy, biblioteki i dokumenty dostępne dla

użytkowników systemu,

− /var - zawiera m.in. przychodzącą i wychodzącą pocztę oraz logi

systemowe.

• każdy użytkownik systemu posiada swój katalog, tzw. katalog domowy,

• użytkownik może wykonywać operacje na plikach znajdujących się w

jego katalogu domowym, jego podkatalogach oraz w innych katalogach -

o ile ich właściciele dadzą mu do tego prawo,

• każdy plik posiada swoją nazwę o długości do 255 znaków,

• nazwa pliku może składać się, m.in. z liter, cyfr, znaku podkreślenia,

spacji, kropek,

• nazwa pliku rozpoczynająca się od kropki oznacza plik ukryty (np.

„.tajne.txt”),

11

• w nazwach rozróżniane są małe i duże litery (np. nazwy plików

„wiosna.txt” i „Wiosna.txt” są różne),

• w nazwach plików i katalogów stosuje się zazwyczaj tylko małe litery

alfabetu łacińskiego,

• użytkownik może poruszać się po systemie katalogów - katalog, w

którym się aktualnie znajduje to katalog bieżący,

• niektóre katalogi mają specjalne oznaczenia:

− znak slash (/) symbolizuje katalog główny,

− kropka (.) symbolizuje katalog bieżący,

− dwie kropki (..) symbolizują katalog nadrzędny,

− znak tyldy (~) symbolizuje katalog domowy użytkownika,

• położenie pliku w systemie plików określa ścieżka dostępu:

− bezwzględna, czyli taka która określa położenie pliku względem

katalogu głównego, np.

/home/krysia/grafika/rysunek.jpeg − względna, czyli taka która określa położenie pliku względem

bieżącego katalogu, np.

./grafika/rysunek.jpeg

../grafika/rysunek.jpeg ~/grafika/rysunek.jpeg

• wieloznaczne nazwy (tzw. maski nazwy lub wzorce nazwy) oznaczają

grupę plików lub katalogów i są tworzone za pomocą znaków

uogólniających, takich jak:

− * - oznacza dowolny ciąg znaków (w tym także ciąg pusty),

12

− ? - oznacza dowolny jeden znak,

− [znaki] lub [znak1-znak2] - oznacza jeden ze znaków

wymienionych na liście lub znak z pomiędzy podanego zakresu.

Tabela 1. Przykładowe wzorce nazw plików i katalogów

Wzorzec nazwy Opis Przykład

a* pliki i katalogi, których nazwa zaczyna się na literę „a”

a ala

a123

a??? pliki i katalogi, których nazwa ma długość czterech znaków i rozpoczyna się na literę „a”

a-la a345 abba

t[aeioy]k pliki i katalogi, których nazwa ma długość trzech znaków, pierwszy znak to „t”, trzeci to „k” a drugi to „a”, „e”, „i”, „o” lub „y”

tak tik tok

rysunek[1-7].??? pliki i katalogi, których nazwa zaczyna się od słowa „rysunek”, po którym następuje jedna z cyfr od 1 do 7, mające trzyznakowe rozszerzenie

rysunek1.jpg rysunek3.bmp rysunek7.gif

* wszystkie pliki i katalogi test.doc Pliki!

DOKUMENTY

*.mp? pliki i katalogi, których nazwa składa się z dowolnego ciągu znaków, mające trzyznakowe rozszerzenie zaczynające się od „mp”

song.mp3 Moj:Film.mpg

super video!.mpg

13

3. Operacje na plikach i katalogach

3.1. Składnia poleceń linuksowych

Praca w trybie tekstowym polega na wydawaniu systemowi odpowiednich

poleceń z poziomu tzw. wiersza poleceń (ang. command line).

Składania polecenia w systemie Linux:

polecenie [-opcje ] [ argumenty ] Opcje polecenia to zazwyczaj pojedyncze litery poprzedzone znakiem minus

(-). Opcje można podawać pojedynczo lub grupowo, np.

$ ls -a -l -t $ ls -alt $ ls -al -t

Niektóre opcje mają także postać pełnych słów, wtedy każdą z nich należy

poprzedzić podwójnym znakiem minus (--), np.

$ ls --all --format=long polecenie to jest równoważne poleceniu ls -al

Argumenty polecenia to ciągi znaków (np. nazwy plików i katalogów, nazwy

użytkowników, wartości liczbowe) przekazywane do polecenia, np.

$ cp stary.plik nowy.plik argumentami są tutaj nazwy plików

$ finger nowakj argumentem jest tutaj nazwa użytkownika

$ ls /home argumentem jest tutaj ścieżka dostępu

14

Polecenia można wydawać w jednym wierszu, ale należy je w tym celu

oddzielić od siebie znakiem średnika (;), np.

$ who; pwd; ls /home -al

3.2. Wyszukiwanie informacji o poleceniach

• apropos (składnia: apropos szukany_ciąg_znaków) - program

przeszukuje opisy poleceń, np.

$ apropos „copy files” wyszukaj polecenia, w których opisie znajduje się ciąg znaków „copy files”

$ apropos password | less wyszukaj polecenia, w których opisie znajduje się słowo „password”

• man (składnia: man nazwa_programu), info (składnia: info

nazwa_programu), opcja --help (składnia: nazwa programu --help) -

wyświetla opis składni i opcji danego polecenia, np.

$ man mv wyświetl opis polecenia mv

$ info cp wyświetl opis polecenia cp

$ rm --help |less wyświetl opis polecenia rm

Zakończenie wyświetlania opisu odbywa się po naciśnięciu klawisza [Q].

15

3.3. Podstawowe polecenia systemu Linux

• pwd - wyświetlanie nazwy bieżącego katalogu, np.

$ pwd

• ls - wyświetlenie zawartości katalogu, np.

$ ls wyświetl zawartość bieżącego katalogu (bez plików ukrytych)

$ ls /bin wyświetl zawartość katalogu /bin

$ ls *.c $ ls -a $ ls -l $ ls -tl

• cd - zmiana bieżącego katalogu, np.

$ cd grafika przejdź do katalogu „grafika” będącego w bieżącym katalogu

$ cd .. $ cd ../../listy $ cd / $ cd /home/jacek $ cd $ cd ~

• mkdir - utworzenie katalogu, np.

$ mkdir test utwórz katalog „test” w katalogu bieżącym

$ mkdir grafika/zdjecia

16

• tree - wyświetlenie struktury katalogów i plików, np.

$ tree

• rmdir - usunięcie pustego katalogu, np.

$ rmdir test usuwany w ten sposób katalog „test” musi być pusty, a użytkownik musi mieć uprawnienia do jego usunięcia. Ponadto, nie można usunąć katalogu bieżącego.

• edytor pico - utworzenie plików tekstowych, np.

$ pico zaproszenie.txt uruchomi edycję pliku zaproszenie.txt w edytorze pico:

Podstawowe polecenia edytora pico :

− [Ctrl]+[O] - zapisanie zmian (Write Out),

− [Ctrl]+[R] - odczytanie pliku (Read File),

− [Ctrl]+[X] - zamknięcie edytora (Exit).

17

• find - wyszukiwanie plików i katalogów zgodnie z zadanym kryterium,

np.

$ find / -name index.html znajdź w katalogu głównym i jego podkatalogach wszystkie pliki o nazwie „index.html”. Należy pamiętać, że aby móc przeszukiwać zawartość katalogów, użytkownik musi mieć do tego prawo. W przeciwnym wypadku otrzyma komunikat o braku dostępu do danego katalogu („Permission denied”).

$ find . -name "*.txt" $ find /home -user kowalski -name ”*.html”

• cat, more, less - wyświetlanie plików tekstowych, np.

$ cat zaproszenie $ more zaproszenie $ less zaproszenie

• rm - usuwanie plików, np.

$ rm zaproszenie.txt usuń plik zaproszenie.txt

$ rm w* $ rm ~/* $ rm -rf mojkatalog

• cp - kopiowanie plików, np.

$ cp list.txt zaproszenie.txt kopiuj plik „list.txt” do pliku „zaproszenie.txt”

$ cp *.jpeg ~/grafika $ cp list.txt ..

18

• mv - przenoszenie plików (zmiana nazwy):

$ mv list.txt zaproszenie.txt zmień nazwę pliku „list.txt” na „zaproszenie.txt”

• klawisz [Tab] - uzupełnianie nazwy plików. Naciśnięcie klawisza [Tab]

podczas wprowadzania nazwy pliku (jako argumentu polecenia)

spowoduje uzupełnienie jego nazwy.

• klawisze kursora [↑] i [↓] - przechodzenie do wydanych wcześniej

poleceń. Naciśnięcie klawiszy kursora pozwala przeglądać i wybrać

wydane wcześniej polecenia.

• history - przeglądanie wydanych poleceń, np.

$ history

• du - wyświetlanie informacji o zajętości katalogów, np.

$ du

• df - wyświetlenie informacji o zajętości dysków, np.

$ df

• quota - wyświetlenie informacji o ograniczeniach użytkownika co do

ilości miejsca i liczby utworzonych plików, np.

$ quota

19

4. Edytor tekstów vi

Zalety edytora vi:

• popularność - standardowo dostępny edytor w systemach uniksowych,

• możliwość pracy z bardzo dużymi plikami tekstowymi,

• podświetlanie składni wielu różnych języków programowania oraz

dodatkowe ułatwienia dla programistów (np. kontrola zamknięcia

nawiasów, automatyczne wcięcia kodu programu, wsparcie dla narzędzi

programistycznych, takich jak gcc, cvs, make),

• zaawansowane wyszukiwanie tekstu (interpretacja wyrażeń regularnych),

• łatwe pisanie makropoleceń.

Utworzenie (otworzenie) pliku w edytorze vi:

$ vi praca.txt

Rys. 5. Edytor tekstów vi

20

4.1. Tryby pracy edytora vi

Do najczęściej wykorzystywanych trybów edytora vi należy:

• normalny tryb wydawania poleceń (tzw. tryb normalny),

• tryb wprowadzania tekstu,

• tryb zastępowania tekstu,

• tryb wydawania poleceń z linii poleceń (tzw. tryb poleceń).

Normalny tryb wydawania poleceń (tryb normalny) jest to tryb, który służy do:

• poruszania się po dokumencie, tzn. przeglądanie tekstu oraz proste

wyszukiwanie znaków w obrębie bieżącego wiersza (zob. Tabela 2),

• zaawansowanie usuwanie fragmentów tekstu (zob. Tabela 4),

• kopiowanie fragmentów tekstu do bufora oraz wstawianie ich do

dokumentu (zob. Tabela 8).

Tryb wprowadzania tekstu pozwala wprowadzać tekst do dokumentu oraz go

usuwać. Przejście do trybu wprowadzania następuje po użyciu w trybie

normalnym, jednego z takich poleceń, jak np. i, I, a, A, o, O (zob. Tabela 3).

Powrót z trybu wprowadzania tekstu do trybu normalnego - klawisz [Esc].

Tryb zastępowania tekstu pozwala na nadpisywanie wprowadzonego tekstu

nowym. Przejście do trybu zastępowania następuje po użyciu w normalnym

trybie, polecenia R (zob. Tabela 5). Powrót z trybu zastępowania do trybu

normalnego - klawisz [Esc].

21

Tryb wydawania poleceń z linii poleceń (tryb poleceń) pozwala na:

• zaawansowane wyszukiwanie (zob. Tabela 6) i zamianę znalezionego

tekstu (zob. Tabela 7),

• operacje na plikach i wydawanie poleceń systemowych (zob. Tabela 10),

• zmianę sposobu wyświetlania tekstu (np. numerowanie wierszy tekstu)

oraz konfigurowanie edytora (np. określenie zasad traktowania dużych i

małych liter podczas wyszukiwania tekstu).

Przejście do trybu wydawania poleceń następuje po naciśnięciu w normalnym

trybie dwukropka (:). Powrót z trybu wydawania poleceń do trybu normalnego

następuje automatycznie po wykonaniu polecenia.

Normalny tryb wydawania

poleceń (np. polecenia j, k, G, $, x,

dw)

Tryb wprowadzania

tekstu np. polecenie i, a, A

klawisz [Esc]

Tryb wydawania poleceń z linii poleceń (np. polecenia :wq, :help, :s/stary/nowy/g)

dwukropek (:)

klawisz [Esc]

np. polecenie R Tryb zastępowania

tekstu

Rys. 6. Tryby pracy edytora vi

22

4.2. Podstawowe polecenia edytora vi

Tabela 2. Polecenia edytora vi - nawigacja po dokumencie

j przesunięcie kursora o jeden wiersz w dół k przesunięcie kursora o jeden wiersz w górę h przesunięcie kursora o jeden znak w lewo l przesunięcie kursora o jeden znak w prawo L przesunięcie kursora na dół ekranu H przesunięcie kursora na górę ekranu M przesunięcie kursora na środek ekranu CTRL+f przesunięcie kursora o jeden ekran w dół CTRL+b przesunięcie kursora o jeden ekran w górę CTRL+d przesunięcie kursora o pół ekranu w dół CTRL+u przesunięcie kursora o pół ekranu w górę G przejście na początek ostatniego wiersza nG powoduje przesunięcie kursora do n-tego wiersza $ przesunięcie kursora na koniec bieżącego wiersza ^ przesunięcie kursora na początek bieżącego wiersza fx przesunięcie kursora do najbliższego znaku „x” znajdującego się po prawej

stronie kursora w bieżącym wierszu Fx przesunięcie kursora do najbliższego znaku „x” znajdującego się po lewej

stronie kursora w bieżącym wierszu ; powoduje powtórzenie ostatniego polecenie f lub F W przesunięcie kursora o jeden wyraz do przodu nW przesunięcie kursora o n wyrazów do przodu B przesunięcie kursora o jeden wyraz do tyłu nB przesunięcie kursora o n wyrazów do tyłu E przesunięcie kursora na koniec bieżącego wyrazu ( przesunięcie kursora o jedno zdanie do tyłu ) przesunięcie kursora o jedno zdanie do przodu

Tabela 3. Polecenia edytora vi - wprowadzanie tekstu

i rozpoczęcie wprowadzania tekstu od bieżącej pozycji kursora a rozpoczęcie wprowadzania tekstu od znaku znajdującego się za kursorem I rozpoczęcie wprowadzania tekstu na początku linii w której znajduje się kursor A rozpoczęcie wprowadzania tekstu na końcu linii w której znajduje się kursor O wstawienie nowego wiersza powyżej kursora i rozpoczęcie wprowadzania tekstu w

nowym wierszu o wstawienie nowego wiersza poniżej kursora i rozpoczęcie wprowadzania tekstu w

nowym wierszu

23

Tabela 4. Polecenia edytora vi - usuwanie tekstu

x usunięcie znaku znajdującego się pod kursorem X usunięcie znaku znajdującego się przed kursorem de usunięcie znaków znajdujących się od miejsca wskazywanego przez kursor do

końca bieżącego wyrazu dw usunięcie znaków od miejsca wskazywanego przez kursor do początku następnego

wyrazu d^ usunięcie znaków od bieżącej pozycji kursora do początku danego wiersza d$ usunięcie znaków od bieżącej pozycji kursora do końca wiersza dG usunięcie tekstu od pozycji kursora do końca pliku dnh usunięcie n znaków poprzedzających dnl usunięcie n kolejnych znaków D usunięcie znaków do końca bieżącego wiersza J połączenie wiersza poniżej kursora z wierszem bieżącym dd usunięcie bieżącego wiersza dnd usunięcie bieżącego wiersza i n-1 kolejnych wierszy u anulowanie wprowadzonych zmian (m.in. usuniętego tekstu)

Tabela 5. Polecenia edytora vi służące do zastępowania tekstu

rx zastąpienie znaku znajdującego się pod kursorem znakiem „x”; po dokonaniu zamiany edytor pozostaje w trybie wydawania poleceń

cw usunięcie znaków do końca bieżącego słowa i przejście do trybu wstawiania tekstu C usunięcie znaków do końca wiersza i przejście do trybu wprowadzania R włączenie trybu zastępowania

Tabela 6. Polecenia edytora vi - wyszukiwanie tekstu

/abc wyszukanie ciągu „abc” w dół ekranu ?abc wyszukanie ciągu „abc” w górę ekranu n powtórzenie ostatniego polecenia wyszukania ciągu znaków :set ic :set noic

włączenie (:set ic) i wyłączenie (:set noic - tryb domyślny) trybu ignorowania wielkości znaków podczas wyszukiwania tekstu

Tabela 7. Polecenia edytora vi - zamiana tekstu

:s/stary/nowy/ znalezienie w bieżącym wierszu pierwszego wystąpienia tekstu stary i zastąpienie go tekstem nowy

:s/stary/nowy/g znalezienie w bieżącym wierszu wszystkich wystąpień tekstu stary i zastąpienie ich tekstem nowy

:n,m s/stary/nowy/g przeszukanie fragmentu tekstu od wiersza o numerze n do wiersza o numerze m i znalezienie w tym obszarze wszystkich wystąpień tekstu stary i zastąpienie ich tekstem nowy

:1,$ s/stary/nowy/g globalne zastępowanie w całym pliku :1,$ s/stary/nowy/gc globalne zastępowanie w całym pliku - każda operacja

zamiany wymaga akceptacji przez użytkownika

24

Bufor edytora

Edytor tekstu vi umożliwia umieszczenie (skopiowanie lub przeniesienie)

fragmentu tekstu do bufora (schowka), a następnie wklejenie go w dowolne

miejsce dokumentu.

W buforze umieszczany jest fragment tekstu, który został:

• skopiowany (zob. Tabela 8),

• usunięty (zob. Tabela 4).

Tekst z bufora może być wielokrotnie wstawiany (wklejany) do dokumentu.

Tabela 8. Polecenia edytora vi - kopiowanie tekstu

yw skopiowanie tekstu od bieżącej pozycji kursora do końca wyrazu yb skopiowanie tekstu od początku wyrazu do bieżącej pozycji kursora y$ skopiowanie tekstu od bieżącej pozycji kursora do końca wiersza Y skopiowanie do bufora bieżącego wiersza yy Działanie jak „Y” p Wklejenie zawartości bufora za znakiem wskazywanym przez kursor P Wklejenie zawartości bufora przed znakiem wskazywanym przez kursor

25

Praca z kilkoma oknami

Rys. 7. Edytor tekstów vi z otwartymi dwoma oknami

Tabela 9. Polecenia edytora vi - praca z wieloma oknami

:new otworzenie nowego okna edytora :split lub [Ctrl+W]s podział aktualnego okna na dwie części [Ctrl+W] j przejście do okna poniżej [Ctrl+W] k przejście do okna powyżej [Ctrl+W] t przejście do górnego okna [Ctrl+W] b przejście do dolnego okna :help wyświetlenie w nowym oknie pomocy

Koniec pracy z edytorem

Do zapisania zmian w dokumencie i zakończenia pracy z edytorem vi służy

polecenie :wq. Jeżeli użytkownik nie chce zapisywać wprowadzonych zmian

musi wydać polecenie :q!. Polecenia związane z kończeniem pracy w edytorze

oraz z wykonywaniem operacji na plikach zawiera poniższa tabela.

26

Tabela 10. Polecenia edytora vi - operacje na plikach, poleceniach systemu, kończenie pracy

:q zakończenie pracy edytora :q! zakończenie pracy edytora bez zapisania zmian :wq zakończenie pracy edytora wraz z zapisaniem zmian :r nazwa_pliku wstawienie zawartości pliku w bieżącym wierszu :! polecenie wykonanie polecenie powłoki :r! polecenie wstawienie wyniku działania polecenia w bieżącym wierszu

4.3. Konfigurowane edytora vi

Ustawienia edytora zapisywane są w pliku .vimrc, który musi znajdować się w

katalogu domowym użytkownika.

Najczęściej zapisywane ustawienia konfiguracji:

syntax on włączenie podświetlania składni edytowanego kodu programu

set number numerowanie wyświetlanych wierszy dokumentu

set nonumber wyłączenie numerowania wyświetlanych wierszy

set ts=4 ustalenie pozycji tabulacji na 4 znaki

set textwidth=80 ustawienie długości wyświetlanego wiersza na 80 znaków

set autoindent włączenie auto-wcięcia

set noautoindent wyłączenie auto-wcięcia

set incsearch automatyczne wyszukiwanie ciągu znaków podczas korzystania z polecenia „/”

set ruler

27

wyświetlenie współrzędnych kursora (wiersz, kolumna) set showmode

wyświetlenie informacji o trybie edytora set showcmd

wyświetlenie wydawanego polecenia set backup

tworzenie kopii zapasowych plików set backupdir=~/backup/

określenie katalogu, w którym tworzone będą kopie zapasowe (w tym przypadku jest to ~/backup/)

Powyższe polecenia można wydać w trybie poleceń.

28

5. Program Midnight Commader

Midnight Commander jest programem do zarządzania plikami i katalogami.

Rys. 8. Midnight Commander

Uruchomienie programu Midnight Commander:

$ mc Podstawowe skróty klawiaturowe i klawisze funkcyjne programu mc:

• [F1], [F2], [F3], [F4], [F5], [F6], [F7], [F8], [F9], [F10],

• [Tab], [Alt]+[?], [Alt]+[O], [Ctrl]+[O], [Ctrl]+[R], [Ctrl]+[S], [Ctrl]+[U],

• [Alt]+[+], [Alt]+[-], [Alt]+[*].

Szczegółowy opis możliwości programu i kombinacji klawiszy jest dostępny w

manualu (polecenie man mc).

29

6. Operacje wejścia - wyjścia

6.1. Strumień danych oraz urządzenia wejścia i wyjścia

• dostarczanie danych do procesów oraz generowanie danych przez

procesy polega na przesyłaniu tzw. strumieni danych,

• dane do procesu trafiają, jako strumień danych wejściowych

wygenerowany przez urządzenie wejścia,

• z procesu dane wychodzą, jako wygenerowany przez proces strumień

danych wyjściowych skierowany do urządzenia wyjścia,

• urządzenia wejścia to np. klawiatura, plik; urządzenia wyjścia to np.

monitor, plik, drukarka. W przypadku tych urządzeń rozróżnia się, tzw.

− standardowe wejście - urządzenie, z którego proces domyślnie

otrzymuje strumień danych wejściowych (najczęściej klawiatura),

− standardowe wyjście - urządzenie, do którego proces domyślnie

kieruje strumień danych wyjściowych (najczęściej monitor).

klawiatura

urządzenie wejścia

strumień danych

wejściowy

PROCES

strumień danych

wyjściowy

monitor

urządzenie wyjścia Rys. 9. Przepływ strumieni danych pomiędzy procesem a urządzeniami wejścia i wyjścia

30

6.2. Przekierowanie wejścia i wyjścia

• przekierowanie wejścia oznacza zmianę urządzenia wejściowego z

domyślnego na inne, wskazane przez użytkownika. Służy do tego

operator „<”;

• przekierowanie wyjścia oznacza zmianę urządzenia wyjściowego z

domyślnego na inne, wskazane przez użytkownika. Służą do tego

operator „>” lub operator „>>”. Różnica w działaniu tych operatorów

jest widoczna w przypadku przekierowania wyjścia do pliku, tzn.:

− operator „>” powoduje zastąpienie bieżącej zawartości pliku

przekierowanym strumieniem danych,

− operator „>>” powoduje dopisanie (na końcu pliku) do zawartości

pliku przekierowanego strumienia danych.

strumień danych

klawiatura

standardowe wejście

monitor plik

standardowe wyjście

PROCES

strumień danych

wejściowych

Rys. 10. Przekierowanie wyjścia

31

Przykładowe przekierowanie wyjścia:

$ ls > spis.txt $ cat zaproszenie.txt > teksty.txt $ cat ogloszenie.txt >> teksty.txt $ sort lista.txt > lista_posortowana.txt $ echo „Akademia Ekonomiczna” > uczelnia.txt

Przykładowe przekierowanie wejścia:

$ sort ola ala basia [Crtl]+[D] ala basia ola

standardowo polecenie sort pobiera z podanego pliku (standardowe wejście polecenia sort) strumień danych i wyświetla go posortowanego wierszami na monitorze (standardowe wyjście polecenia sort). W tym przypadku plik nie został podany, dlatego polecenie sort będzie pobierało strumień danych z klawiatury, aż do naciśnięcia kombinacji [Ctrl]+[D]. Następnie wyświetli je na monitorze posortowane.

$ write nowakj < komunikat.txt

6.3. Tworzenie potoków

Potok jest to skierowanie standardowego wyjścia jednego procesu do

standardowego wejścia innego procesu. Operatorem tworzenia potoku jest

pionowa kreska „|”.

Tworzenie potoku można przedstawić następująco:

proces | proces | ... | proces

32

Tworzenie potoków można równocześnie łączyć z przekierowaniem wejścia i

wyjścia, co pozwala na zaawansowane przetwarzanie strumieni danych., np.

proces | proces | ... | proces > urządzenie wyjścia

urządzenie wejścia

strumień danych

wejściowy

plik

PROCES

strumień danych

wyjściowy

strumień danych

PROCES

monitor

urządzenie wyjścia

potok

Rys. 11. Potok danych

Przykładowe tworzenie potoków:

$ ls | sort $ finger | grep ”Jacek” | sort > lista.txt

Potoki mogą być także rozwidlane. Do rozwidlania potoku służy polecenie tee,

które robi kopię strumienia danych i zapisuje ją w pliku, a „oryginalny”

strumień danych przepuszcza dalej do standardowego wyjścia lub kolejnego

procesu.

33

urządzenie wejścia

strumień danych

wejściowy

klawiatura

tee plik

strumień danych

wyjściowy

strumień danych

PROCES

monitor

plik

urządzenie wyjścia

potok

kopia strumienia danych

rozwidlenie potoku

Rys. 12. Rozwidlenie potoku danych

Przykładowe rozwidlenia potoków:

$ sort lista.txt | tee lista_posortowana.txt $ sort lista.txt | tee pliczek.txt | cat -n

34

7. Ochrona zasobów systemu komputerowego

Właściciel zasobów może ograniczyć innym użytkownikom systemu dostęp do

plików i katalogów dzięki możliwości nadawania i odbierania praw dostępu.

Organizacja praw dostępu wygląda następująco:

• każdy plik i katalog posiada atrybuty określające prawo do:

− odczytania (r - ang. reading),

− zapisania (w - ang. writing),

− wykonania (x - ang. executing).

• prawa dostępu określane są niezależnie dla:

− właściciela zasobu (u - ang. user),

− członków grupy, do której należy właściciel zasobu (g - ang. group),

− pozostałych użytkowników (o - ang. others).

Wyświetlenie praw dostępu - polecenia ls z opcją -l, np. $ ls -al drwxrwxr-x 6 nowakj infor 755 Feb 22 17:23 . drwxrwxr-x 2 nowakj infor 222 Jan 10 10:22 .. -rwxr-x--- 1 nowakj infor 1560 Feb 26 13:01 lista

Odczytanie wyświetlonych w taki sposób informacji o zasobie i prawach

dostępu do niego, umożliwia analiza 10 pierwszych znaków każdego wiersza

(np. drwxr-x--x). Znaczenie poszczególnych znaków (pozycji) jest następujące:

− 1. znak - rodzaj zasobu: katalog (d), plik (-), link symboliczny (l)

− 2. - 4. znak - prawa właściciela zasobu,

− 5. - 7. znak - prawa grupy, do której należy właściciel,

− 8. - 10. znak - prawa pozostałych użytkowników.

35

- r w x r W x r w X plik (-),

katalog (d), symlink (l)

u (user) prawa właściciela

zasobu

g (group) prawa grupy, do której

należy właściciel zasobu

o (other) prawa pozostałych

użytkowników

Dziewięć znaków, które mówią o prawach dostępu (znaki od 2. do 10.) określa

się mianem maski praw (np. rwxr-x--x).

Liczbowa maska praw: r w x r - x - - x 1 1 1 1 0 1 0 0 1

111 binarnie = 7 dziesiętnie 101 binarnie = 5 dziesiętnie 001 binarnie = 1 dziesiętnie user group other

Przykładowe maski praw należy interpretować:

751 = rwxr-x--x 711 = rwx--x--x 530 = r-x-wx---

Do zmiany praw dostępu służy polecenie chmod, które można uruchomić

zarówno z maską liczbową, jak i prawami poszczególnych użytkowników (u,

g, o, a) zapisanymi odpowiednimi symbolami (r, w, x), np.

$ chmod 751 lista.txt $ chmod g+wx * $ chmod a-rwx tajne.txt

Schemat zmiany praw przy wykorzystaniu symbolicznych oznaczeń:

$ chmod

−+

xwr

aogu

plik

36

8. Konfiguracja powłoki systemu Linux

Do podstawowych elementów systemu operacyjnego Linux należy:

• powłoka (shell, interpreter poleceń) - program pełniący funkcję interfejsu

pomiędzy użytkownikiem i jądrem systemu, interpretujący polecenia oraz

umożliwiający uruchamianie programów. Najczęściej wykorzystywaną

powłoką w Linuksie jest Bash (Bourne Again SHell).

• jądro systemu - zbiór programów zarządzający procesami i zasobami

systemu,

• programy narzędziowe.

POWŁOKA

PROGRAMY NARZĘDZIOWE

JĄDRO SYSTEMU

Rys. 13. Ogólna struktura systemu operacyjnego Linux

Jednym ze sposobów komunikacji pomiędzy wymienionymi elementami

systemu operacyjnego jest wykorzystanie zmiennych powłoki.

8.1. Zmienne powłoki

Zmienna to cecha posiadająca swoją nazwę i przyjmująca pewną wartość.

Polecenia wykorzystywane podczas pracy ze zmiennymi:

37

• set - wyświetlenie zmiennych powłoki (informacje wyświetlane są w

postaci nazwa_zmiennej=wartość_zmiennej), np.

$ set HOME=/home/nowakj PWD=/home/nowakj/public_html USER=nowakj

• echo - polecenie można wykorzystać do wyświetlenia wartości jednej

zmiennej. Nazwę zmiennej należy poprzedzić znakiem dolara (np.

$HOME, $USER), np.

$ echo ”informatyka” informatyka $ echo HOME HOME $ echo $HOME /home/nowakj $ echo $SHELL /bin/bash

• operator „=” - zdefiniowanie nowej zmiennej lub zmiana wartości

zmiennej już istniejącej (po obu stronach znaku równości nie wolno

zamieszczać spacji), np.

$ UCZELNIA=”Uniwersytet Jagielloński” $ UCZELNIA=”Akademia Ekonomiczna” $ UCZELNIA=”$UCZELNIA w Krakowie” $ echo $UCZELNIA Akademia Ekonomiczna w Krakowie

38

• pojedyncze cudzysłowy (apostrofy) - maskowanie nazwy zmiennej, tzn.

sprawienie, że nie pojawia się jej wartość, np.

$ UCZELNIA=”AE w Krakowie” $ echo ’Studiuje w $UCZELNIA’ Studiuje w $UCZELNIA

• polecenie unset - usuwanie zmiennych powłoki, np.

$ unset UCZELNIA

8.2. Przykładowe zmienne powłoki systemowej

Spośród wielu zmiennych powłoki, najczęściej wykorzystywane lub

modyfikowane przez użytkowników są, zmienne:

• PS1 - zmienna przechowuje definicję tzw. znaku zachęty (monitu

systemu), np.

$ PS1=”Podaj polecenie:” Podaj polecenie:

Użytkownik definiując znak zachęty może w nim zamieszczać specjalne kody,

które są następnie zamieniane na odpowiednie wartości, np.

$ PS1=”\h: \w \$”

Tabela 11. Kody wykorzystywane przy definiowaniu znaku zachęty

Kod Znaczenie \! numer polecenia \$ znak dolara ($) dla zwykłego użytkownika, dla użytkownika root znak hash (#) \d aktualna data \s nazwa powłoki \t aktualny czas \u nazwa użytkownika \w katalog bieżący \h nazwa komputera

39

• HOME - zmienna przechowuje ścieżkę dostępu do katalogu domowego

użytkownika, np.

$ echo $HOME /home/nowakj

• PATH - zmienna przechowuje tzw. ścieżki poszukiwań. Dwukropek

znajdujący się na końcu zmiennej PATH oznacza, że przeszukiwany

będzie także katalog bieżący.

$ echo $PATH /usr/bin:/usr/sbin

Tabela 12. Zawartość zmiennej PATH a przeszukiwane katalogi

Zmienna PATH Przeszukiwane katalogi /usr/bin:/usr/sbin /usr/bin

/usr/sbin /usr/bin:/usr/sbin: /usr/bin

/usr/sbin katalog bieżący

Nowe ścieżki dostępu do zmiennej PATH można dodać np. w ten sposób:

$ PATH=$PATH:$HOME/programy

• SHELL - zmienna przechowuje nazwę programu będącego interpreterem

poleceń, np.

$ echo $SHELL /bin/bash

• USER - zmienna przechowuje nazwę użytkownika, np.

$ echo $USER nowakj

40

8.3. Uruchamianie kolejnych powłok

Użytkownik w systemie Linux ma możliwość uruchamiania kolejnych powłok,

tzw. powłok potomnych, służy do tego polecenie bash. Do zamknięcia otwartej

powłoki potomnej służy polecenie exit.

Przykładowo:

$ ... praca z pierwszą powłoką

$ bash uruchomienie drugiej powłoki

$ ... praca z drugą powłoką

$ exit zamknięcie drugiej powłoki

$ ... praca z pierwszą powłoką

Powłoka 1 $ ls $ cp plik test.txt $ bash

Powłoka 2 $ finger $ bash Powłoka 3

$ pwd $ man cat $ exit

$ echo $HOME $ exit

$ vi test.txt $ logout

Rys. 14. Praca z kilkoma powłokami

41

8.4. Lokalne i globalne zmienne systemowe

• zmienna lokalna to zmienna dostępna tylko w bieżącej powłoce,

• zmienna globalna to zmienna widoczna w bieżącej powłoce (powłoce

macierzystej) i wszystkich powłokach potomnych. Zmienną globalną

tworzy się za pomocą polecenia export, które może być wykorzystane

przy tworzeniu nowej zmiennej lub do wyeksportowania zmiennej już

istniejącej. Zmienne utworzone (wyeksportowane) w powłoce potomnej

nie są widoczne w powłoce macierzystej. Powłoka 1

$ UCZELNIA=”AE” $ echo $UCZELNIA AE $ bash

Powłoka 2 $ echo $UCZELNIA

zmienna UCZELNIA utworzona w Powłoce 1 nie została wyeksportowana, a więc nie jest widoczna w Powłoce 2

$ exit

$ export UCZELNIA=”AE” $ echo $UCZELNIA AE $ MIASTO=”Kraków” $ export MIASTO $ echo $MIASTO Kraków $ bash

Powłoka 2 $ echo $UCZELNIA AE

zmienna UCZELNIA wyeksportowana z Powłoki 1 jest widoczna w Powłoce 2

$ echo $MIASTO Kraków $ MIASTO=”Gdynia” $ export STOLICA=”Warszawa” $ exit

$ echo $MIASTO Kraków

zmiana w Powłoce 2 wartości zmiennej MIASTO nie jest widoczna w Powłoce 1 $ echo $STOLICA

zmienna STOLICA utworzona w Powłoce 2 nie jest widoczna w Powłoce 1 $ logout

Rys. 15. Zmienne lokalne i globalne w powłokach

42

8.5. Pliki startowe

Użytkownik ma możliwość skonfigurowania systemu, w taki sposób, aby przy

każdym logowaniu, uruchamianiu nowej powłoki lub kończeniu pracy, system

automatycznie wykonywał polecenia zawarte w tzw. plikach startowych.

Mechanizm ten jest wykorzystywany do:

• tworzenia lub modyfikowania zmiennych systemowych,

• tworzenia nowych nazw poleceń (aliasów),

• uruchamiania lub zamykania programów,

• wyświetlania komunikatów powitalnych lub pożegnalnych.

Wykorzystywane pliki startowe, to:

• .bash_profile - polecenia zawarte w tym pliku są wykonywane

każdorazowo przy logowaniu się użytkownika,

• .bashrc - polecenia zawarte w tym pliku są wykonywane każdorazowo

przy uruchamianiu nowej powłoki,

• .bash_logout - polecenia zawarte w tym pliku są wykonywane

każdorazowo przy kończeniu pracy przez użytkownika.

43

8.6. Aliasy

Użytkownik ma możliwość definiowania nowych nazw dla poleceń, tzw.

aliasów. Służy do tego polecenie alias, a składnia jego jest następująca:

$ alias nazwa=polecenie lub

$ alias nazwa=’polecenie’ Polecenie alias bez żadnych argumentów i opcji wyświetla wszystkie

zdefiniowane przez użytkownika aliasy.

Możliwość definiowania aliasów jest przydatna kiedy użytkownik chce nadać

np. łatwiejszą do zapamiętania nazwę jakiemuś poleceniu lub chce w skróconej

postaci zapisać polecenie wraz z jego opcjami i argumentami.

Do usuwania zdefiniowanych aliasów służy polecenie unalias.

Przykładowe definicje i usuwanie aliasów:

$ alias katalog=ls $ alias katalog=’ls -al’ $ alias ls=’ls -al’ $ unalias katalog $ unalias ls

Jeżeli aliasy mają być dostępne w każdej nowej sesji użytkownika, to należy je

zdefiniować w pliku .bashrc.

44

9. Skrypty powłoki

Skrypty powłoki są to polecenia systemowe zapisane w pliku tekstowym.

Wykonanie skryptu odbywa się „wiersz po wierszu”.

Przykładowy skrypt powłoki o nazwie kopia:

echo ”Mój katalog domowy” > wykaz date >> wykaz ls -al >> wykaz echo ”Koniec” >> wykaz

powyższy skrypt utworzy plik „wykaz” (lub zastąpi jego zawartość, jeżeli taki plik istnieje), zapisze w nim tekst „Mój katalog domowy”, bieżącą datę, zawartość bieżącego katalogu oraz tekst „Koniec”

Skrypt powłoki można uruchomić poprzedzając jego nazwę kropką i spacją

(„. ”) lub przekierowując jego zawartość do polecenia bash, np.

$ . kopia $ bash < kopia

Skrypt powłoki ma dla użytkownika status programu powłoki, wtedy kiedy

użytkownik ma nadane prawo do jego wykonywania, np.

$ chmod u+x kopia Uruchamianie programu jest możliwe poprzez podanie jego nazwy, np.

$ kopia Taki sposób uruchomienia jest możliwy tylko wtedy, kiedy zmienna PATH

zawiera ścieżkę dostępu do katalogu bieżącego. Jeżeli PATH nie przeszukuje

bieżącego katalogu, to taki skrypt należy uruchamiać poprzedzając jego nazwę

względną ścieżką dostępu (czyli „./”), tzn.

$ ./kopia

45

Parametry skryptu

Parametr skryptu to informacja przekazywana do skryptu w momencie jego

uruchamiania, np.

$ skrypt parametr1 parametr2

Największą zaletą tworzenia skryptów z parametrami jest możliwość

podstawiania w ich miejsce różnych wartości. Przykładowo, skrypt o nazwie

dopisz, który do pliku o nazwie podanej jako pierwszy parametr dopisuje

zawartość pliku o nazwie podanej jako drugi parametr, może być wykonany z

takimi parametrami:

$ dopisz list1 list2 co oznacza, że dopisze do zawartości pliku list1 zawartości pliku list2. Można

go uruchomić także z innymi parametrami, np.

$ dopisz rozdzial3 rozdzial4 co oznacza, że dopisze do pliku rozdzial3 zawartości pliku rozdzial4.

Uogólniając, można powiedzieć, że wywołanie skryptu ma następującą postać:

$ dopisz parametr1 parametr2 gdzie parametr1 oraz parametr2 są nazwami plików.

Parametry podawane przy uruchomieniu skryptu nazywane są parametrami

aktualnymi.

Aby skrypt mógł wykonać postawione zadanie musi mieć możliwość

odwołania się do wartości parametrów podanych przy jego uruchamianiu, tzn.

pisząc skrypt jego autor musi podać, w którym miejscu skrypt odwołuje się do

parametru pierwszego, w którym do parametru drugiego, itd.

46

Możliwość odwołania się do wartości parametrów daje wykorzystanie symboli,

w miejsce których w czasie wykonywania skryptu wstawiane są wartości

parametrów aktualnych:

• $1 - symbolizuje pierwszy parametr aktualny skryptu (tzn. w czasie

wykonania skryptu w jego miejsce wstawiana jest wartość pierwszego

parametru aktualnego), $2 - symbolizuje drugi parametr, itd. aż do $9,

• $0 - symbolizuje nazwę skryptu,

• $# - symbolizuje liczbę parametrów aktualnych,

• $* - symbolizuje łącznie wszystkie parametry aktualne, z którymi został

uruchomiony skrypt.

Parametry występujące w tekście skryptu i symbolizujące parametry aktualne

(tzn. $1, $2, …, $9) nazywane są parametrami formalnymi.

Przykładowo, wspomniany wyżej skrypt dopisz ma następującą postać:

cat $2 >> $1 Jego wywołanie poprzez podanie polecenia:

$ dopisz list1 list2 będzie realizowane jako:

cat list2 >> list1

47

10. Zarządzanie procesami

Proces jest to program realizowany przez system operacyjny. Wyróżniamy:

• procesy użytkownika (zadania użytkownika) - programy i polecenia

uruchomione przez użytkownika,

• procesy systemowe - programy uruchomione przez system operacyjny.

Systemy operacyjne umożliwiające współbieżną realizację procesów to:

• systemy wielozadaniowe - ponieważ w tym samym czasie system

operacyjny realizuje więcej niż jedno zadanie,

• systemy z podziałem czasu - ponieważ czas pracy procesora dzielony jest

pomiędzy poszczególne procesy.

Przeciwieństwem systemów wielozadaniowych są systemy jednozadaniowe

(np. MS DOS).

10.1. Zarządzanie procesami użytkownika w systemie Linux

Nowe zadanie użytkownika - np. program, polecenie - uruchamiane jest

domyślnie na pierwszym planie, pozostałe zadania znajdują się w tle.

Użytkownik ma możliwość zarządzania uruchomionymi zadaniami - może:

• uruchomić zadanie w tle - poprzez dodanie znaku ampersand (&), np.

$ vi praca.txt & [1] 7835

po uruchomieniu zadania w tle, wyświetlane są dwa numery - pierwszy, w nawiasach kwadratowych, oznacza numer zadania użytkownika (tutaj: 1), a drugi numer procesu systemowego (tutaj: 7835).

$

48

• zatrzymać proces na pierwszym planie i przenieść go w tło - służy do

tego kombinacja [Ctrl]+[Z], np.

$ vi referat.txt ...

uruchomienie i praca z edytorem vi [Ctrl]+[Z]

zatrzymanie edytora i przeniesienie go w tło [3]+ Stopped vi

informacje o zatrzymanym edytorze, m.in. [3] - nadany numer zadania, „+” - znacznik bieżącego zadania (tzn. „+” oznacza, że jest to bieżące zadanie, czyli ostatnie przeniesione w tło)

• wyświetlić informacje o stanie zadań w tle - polecenie jobs, np.

$ jobs [1] Stopped vi praca.txt [2]- Running sleep 1000 & [3]+ Stopped vi referat.txt [4] Done ls $ jobs -l [1]- 7835 Stopped vi praca.txt [2] 7841 Running sleep 10000 & [3]+ 7902 Stopped vi referat.txt

• wyświetlić informacje o procesach systemowych - polecenie ps, np.

$ ps PID TTY TIME CMD 7679 pts/1 00:00:00 bash 7835 pts/1 00:00:00 vi 7841 pts/1 00:00:00 sleep 7902 pts/1 00:00:00 vi 8103 pts/1 00:00:00 ps

49

• przesunąć zadanie z tła na pierwszy plan - służy do tego polecenie fg

wywoływane z numerem zadania, nazwą procesu, znacznikiem zadania

bieżącego (+) lub poprzedniego (-), np.

$ fg 1 $ fg + $ fg ”vi referat.txt”

• przesunąć zatrzymane zadanie z pierwszego planu w tło - polecenie bg,

np.

$ bg 1

• zakończyć wykonywane zadanie przed czasem - do zakończenia zadania

pierwszoplanowego służy kombinacja [Ctrl]+[C], do zakończenie zadania

w tle służy polecenie kill wywoływane z numerem procesu systemowego

lub numerem zadania, znacznikiem bieżącego (+) lub poprzedniego (-)

zadania. Przy poleceniu kill, numer zadania użytkownika i znaczniki

zadania muszą być poprzedzone znakiem procent (%), np.

$ kill 7835 $ kill %2 $ kill %+

50

Przykładowe zarządzanie procesami:

Napisane zostały dwa skrypty - skrypt1 i skrypt2

Plik skrypt1:

echo ”Poczatek 1” > plik1 sleep 45 echo ”Koniec 1” >> plik1

Plik skrypt2:

echo ”Poczatek 2” > plik2 sleep 45 echo ”Koniec 2” >> plik2

Uruchomienie zadania na pierwszym planie:

$ . skrypt1 znak zachęty pojawia się dopiero po 45 sekundach

$ Uruchomienie zadania w tle:

$ . skrypt1& [1] 783

znak zachęty pojawia się natychmiast $ . skrypt2& [2] 794

Wyświetlenie stanu realizowanych zadań:

$ jobs -l [1]- 783 Running program1& [2]+ 794 Running program2&

Usunięcie zadań:

$ kill 783 $ kill %+

51

11. Bezpośrednia komunikacja z innymi użytkownikami systemu

Użytkownik w systemie Linux może komunikować się bezpośrednio z innymi

użytkownikami. Przydatne do tego celu są polecenia:

• finger - wyświetlenie informacji o zalogowanych użytkownikach, np.

$ finger

• write - wysłanie komunikatu do zalogowanego użytkownika, np.

$ write nowakj Czesc Janek Co u Ciebie slychac? ^D

• talk - prowadzenie „rozmów” z innym zalogowanym użytkownikiem, np.

$ talk nowakj użytkownik nowakj dostanie komunikat:

Message from [email protected] at 12:21... talk: connection requested by [email protected] talk: respond with: talk [email protected]

aby przyjąć rozmowę użytkownik nowakj musi wydać polecenie: $ talk kowalj

aby odrzucić rozmowę lub ją zakończyć nowakj musi skorzystać z kombinacji klawiszy [Ctrl]+[C]

• polecenie mesg - wyłączenie (mesg n) lub włączenie (mesg y)

przyjmowania wiadomości i rozmów przez użytkownika, np.

$ mesg n