1. system operacyjny linux - tuchowski.uek.krakow.pltuchowski.uek.krakow.pl/files/ie/linux.pdf ·...
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