Powłoka skrypt zawierający ścieżkę do katalogu
Transkrypt
Powłoka skrypt zawierający ścieżkę do katalogu
Kierunek: Przedmiot: Forma zajęć: Temat: Informatyka i Ekonometria Informatyka ekonomiczna Ćwiczenia Systemy operacyjne. System Linux 1. System operacyjny Linux 1.1. Systemy operacyjne w laboratoriach CI UEK w Krakowie SO: Novell Netware SO: Linux SO: MS Windows SO: MS Windows INTERNET SO: MS Windows SO: MS Windows SO: MS DOS SO: MS DOS Rys. 1. Systemy operacyjne w Centrum Informatyki UEK w Krakowie • Microsoft Windows, • Microsoft DOS, • Novell Netware, • Linux. 1 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). 2 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, Terminale Komputer pracujący w trybie wielodostepnym Rys. 2. Schemat pracy z systemem wielodostępnym 3 • 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ą wykorzystywane różne programy, np. CRT, SSh32, PuTTY. System Operacyjny: Linux Serwer: ie.ae.krakow.pl System Operacyjny: MS Windows dane przesyłane zgodnie z protokołem ssh Emulacja terminala: program PuTTY Rys. 3. Praca zdalna z serwerem linuksowym 4 być 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: 5 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 6 • 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 7 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. 8 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 katalog główny dev home etc ... katalogi systemowe basia krysia janek ... katalogi domowe 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, 9 − /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”), 10 • 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), 11 − ? - 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 a* pliki i katalogi, których nazwa zaczyna się na literę „a” a??? pliki i katalogi, których nazwa ma długość czterech znaków i rozpoczyna się na literę „a” 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” pliki i katalogi, których nazwa zaczyna się od rysunek[1-7].??? słowa „rysunek”, po którym następuje jedna z cyfr od 1 do 7, mające trzyznakowe rozszerzenie t[aeioy]k * *.mp? wszystkie pliki i katalogi pliki i katalogi, których nazwa składa się z dowolnego ciągu znaków, mające trzyznakowe rozszerzenie zaczynające się od „mp” 12 Przykład a ala a123 a-la a345 abba tak tik tok rysunek1.jpg rysunek3.bmp rysunek7.gif test.doc Pliki! DOKUMENTY song.mp3 Moj:Film.mpg super video!.mpg 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 13 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]. 14 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 15 • 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). 16 • 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 .. 17 • 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 18 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 19 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]. 20 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. np. polecenie i, a, A Tryb wprowadzania tekstu klawisz [Esc] Normalny tryb wydawania poleceń (np. polecenia j, k, G, $, x, dw) dwukropek (:) Tryb wydawania poleceń z linii poleceń (np. polecenia :wq, :help, :s/stary/nowy/g) Rys. 6. Tryby pracy edytora vi 21 np. polecenie R klawisz [Esc] Tryb zastępowania tekstu 4.2. Podstawowe polecenia edytora vi Tabela 2. Polecenia edytora vi - nawigacja po dokumencie j k h l L H M CTRL+f CTRL+b CTRL+d CTRL+u G nG $ ^ fx Fx ; W nW B nB E ( ) przesunięcie kursora o jeden wiersz w dół przesunięcie kursora o jeden wiersz w górę przesunięcie kursora o jeden znak w lewo przesunięcie kursora o jeden znak w prawo przesunięcie kursora na dół ekranu przesunięcie kursora na górę ekranu przesunięcie kursora na środek ekranu przesunięcie kursora o jeden ekran w dół przesunięcie kursora o jeden ekran w górę przesunięcie kursora o pół ekranu w dół przesunięcie kursora o pół ekranu w górę przejście na początek ostatniego wiersza 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 przesunięcie kursora do najbliższego znaku „x” znajdującego się po prawej stronie kursora w bieżącym wierszu 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 przesunięcie kursora o jeden wyraz do przodu przesunięcie kursora o n wyrazów do przodu przesunięcie kursora o jeden wyraz do tyłu przesunięcie kursora o n wyrazów do tyłu 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 a I A O o rozpoczęcie wprowadzania tekstu od bieżącej pozycji kursora rozpoczęcie wprowadzania tekstu od znaku znajdującego się za kursorem rozpoczęcie wprowadzania tekstu na początku linii w której znajduje się kursor rozpoczęcie wprowadzania tekstu na końcu linii w której znajduje się kursor wstawienie nowego wiersza powyżej kursora i rozpoczęcie wprowadzania tekstu w nowym wierszu wstawienie nowego wiersza poniżej kursora i rozpoczęcie wprowadzania tekstu w nowym wierszu 22 Tabela 4. Polecenia edytora vi - usuwanie tekstu x X de dw d^ d$ dG dnh dnl D J dd dnd u usunięcie znaku znajdującego się pod kursorem usunięcie znaku znajdującego się przed kursorem usunięcie znaków znajdujących się od miejsca wskazywanego przez kursor do końca bieżącego wyrazu usunięcie znaków od miejsca wskazywanego przez kursor do początku następnego wyrazu usunięcie znaków od bieżącej pozycji kursora do początku danego wiersza usunięcie znaków od bieżącej pozycji kursora do końca wiersza usunięcie tekstu od pozycji kursora do końca pliku usunięcie n znaków poprzedzających usunięcie n kolejnych znaków usunięcie znaków do końca bieżącego wiersza połączenie wiersza poniżej kursora z wierszem bieżącym usunięcie bieżącego wiersza usunięcie bieżącego wiersza i n-1 kolejnych wierszy anulowanie wprowadzonych zmian (m.in. usuniętego tekstu) Tabela 5. Polecenia edytora vi służące do zastępowania tekstu rx cw C R zastąpienie znaku znajdującego się pod kursorem znakiem „x”; po dokonaniu zamiany edytor pozostaje w trybie wydawania poleceń usunięcie znaków do końca bieżącego słowa i przejście do trybu wstawiania tekstu usunięcie znaków do końca wiersza i przejście do trybu wprowadzania włączenie trybu zastępowania Tabela 6. Polecenia edytora vi - wyszukiwanie tekstu /abc ?abc n :set ic :set noic wyszukanie ciągu „abc” w dół ekranu wyszukanie ciągu „abc” w górę ekranu powtórzenie ostatniego polecenia wyszukania ciągu znaków 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/ :s/stary/nowy/g :n,m s/stary/nowy/g :1,$ s/stary/nowy/g :1,$ s/stary/nowy/gc znalezienie w bieżącym wierszu pierwszego wystąpienia tekstu stary i zastąpienie go tekstem nowy znalezienie w bieżącym wierszu wszystkich wystąpień tekstu stary i zastąpienie ich tekstem nowy 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 globalne zastępowanie w całym pliku globalne zastępowanie w całym pliku - każda operacja zamiany wymaga akceptacji przez użytkownika 23 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 yb y$ Y yy p P skopiowanie tekstu od bieżącej pozycji kursora do końca wyrazu skopiowanie tekstu od początku wyrazu do bieżącej pozycji kursora skopiowanie tekstu od bieżącej pozycji kursora do końca wiersza skopiowanie do bufora bieżącego wiersza Działanie jak „Y” Wklejenie zawartości bufora za znakiem wskazywanym przez kursor Wklejenie zawartości bufora przed znakiem wskazywanym przez kursor 24 Praca z kilkoma oknami Rys. 7. Edytor tekstów vi z otwartymi dwoma oknami Tabela 9. Polecenia edytora vi - praca z wieloma oknami :new :split lub [Ctrl+W]s [Ctrl+W] j [Ctrl+W] k [Ctrl+W] t [Ctrl+W] b :help otworzenie nowego okna edytora podział aktualnego okna na dwie części przejście do okna poniżej przejście do okna powyżej przejście do górnego okna przejście do dolnego okna 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. 25 Tabela 10. Polecenia edytora vi - operacje na plikach, poleceniach systemu, kończenie pracy :q :q! :wq :r nazwa_pliku :! polecenie :r! polecenie zakończenie pracy edytora zakończenie pracy edytora bez zapisania zmian zakończenie pracy edytora wraz z zapisaniem zmian wstawienie zawartości pliku w bieżącym wierszu wykonanie polecenie powłoki 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 26 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ń. 27 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). 28 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). urządzenie wejścia klawiatura 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 29 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. standardowe wejście klawiatura strumień danych wejściowych PROCES strumień danych plik monitor standardowe wyjście Rys. 10. Przekierowanie wyjścia 30 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 31 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 plik strumień danych wejściowy PROCES strumień danych potok PROCES strumień danych wyjściowy monitor urządzenie wyjścia 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. 32 urządzenie wejścia klawiatura strumień danych wejściowy rozwidlenie potoku kopia strumienia danych tee plik strumień danych potok plik PROCES strumień danych wyjściowy monitor urządzenie wyjścia 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 33 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. 34 plik (-), katalog (d), symlink (l) r w x u (user) prawa właściciela zasobu r W x g (group) prawa grupy, do której należy właściciel zasobu r w X 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 1 1 1 111 binarnie = 7 dziesiętnie user r x 1 0 1 101 binarnie = 5 dziesiętnie group x 0 0 1 001 binarnie = 1 dziesiętnie 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 u g + r w o − x a plik 35 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: 36 • 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 37 • 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 \! \$ \d \s \t \u \w \h Znaczenie numer polecenia znak dolara ($) dla zwykłego użytkownika, dla użytkownika root znak hash (#) aktualna data nazwa powłoki aktualny czas nazwa użytkownika katalog bieżący nazwa komputera 38 • 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 /usr/bin:/usr/sbin /usr/bin:/usr/sbin: Przeszukiwane katalogi /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 39 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 40 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 41 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. 42 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. 43 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 44 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. 45 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 46 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). $ 47 • 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 [2]- Running [3]+ Stopped [4] Done vi praca.txt sleep 1000 & vi referat.txt ls $ jobs -l [1]- 7835 Stopped [2] 7841 Running [3]+ 7902 Stopped vi praca.txt sleep 10000 & vi referat.txt • wyświetlić informacje o procesach systemowych - polecenie ps, np. $ ps PID 7679 7835 7841 7902 8103 TTY pts/1 pts/1 pts/1 pts/1 pts/1 TIME 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 48 CMD bash vi sleep vi ps • 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 %+ 49 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 [2]+ 794 Running program1& program2& Usunięcie zadań: $ kill 783 $ kill %+ 50 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 51