Скачать презентацию Operační systém typu UNIX Václav Petříček Скачать презентацию Operační systém typu UNIX Václav Petříček

0dea340cd4131fe6fe790d49c20a6935.ppt

  • Количество слайдов: 116

Operační systém typu UNIX Václav Petříček • • • Úvod, charakteristika Historie, principy Systém Operační systém typu UNIX Václav Petříček • • • Úvod, charakteristika Historie, principy Systém souborů, organizace, příkazy Procesy, životní cyklus, komunikace Shell: koncepce, typy, příkazy Zpracování textu (grep, vi, perl) Operační systém typu UNIX 1

Literatura (základy) • J. Brodský, L. Skočovský: Operační systém UNIX a jazyk C; SNTL Literatura (základy) • J. Brodský, L. Skočovský: Operační systém UNIX a jazyk C; SNTL 1989 • L. Petrlík: Jemný úvod do systému UNIX; Kopp 1995 • M. Sova: UNIX V - úvod do operačního systému; Grada 1993 • M. Brandejs: UNIX - LINUX - praktický průvodce; Grada Praha 1993; ISBN 80 -7169 -170 -4 • G. Todino, J. Strang, J. Peek: Learning the UNIX Operating System; O‘Reilly & Associates 1993 • L. Lamb: Learning the vi Editor; O‘Reilly & Associates 1986 -1990; ISBN 0 -937175 -67 -6 Operační systém typu UNIX 2

Literatura (systém) • M. J. Bach: The Design of the UNIX Operating System; Prentice-Hall Literatura (systém) • M. J. Bach: The Design of the UNIX Operating System; Prentice-Hall 1986 • L. Skočovský: Principy a problémy operačního systému UNIX; Science, 1993; ISBN 80 -901475 -0 -X • L. Skočovský: UNIX, POSIX, Plan 9; L. Skočovský, Brno, 1998; ISBN 80 -902612 -0 -5 • M. Welsh, L. Kaufmann: Používáme LINUX; Computer. Press 1997 (O’Reilly); ISBN 80 -7226 -001 -4 Operační systém typu UNIX 3

Literatura (programování) • M. Jelen: UNIX V - programování v systému; Grada Praha 1993; Literatura (programování) • M. Jelen: UNIX V - programování v systému; Grada Praha 1993; ISBN 80 -85623 -16 -1 • B. Rosenblatt: Learning the Korn Shell; O‘Reilly & Associates 1993; ISBN 1 -56592 -054 -6 • D. Dougherty: sed & awk; O‘Reilly & Associates 1990; ISBN 0 -937175 -59 -5 • D. Curry: Using C on the UNIX System; O‘Reilly & Associates 1985, 7, 8; ISBN 0 -937175 -23 -4 • A. Oram, S. Talbott: Managing Projects with make; O‘Reilly & Associates 1986, 91; ISBN 0 -937175 -90 -0 Operační systém typu UNIX 4

Konvence • Pevná část příkazu (neproporcionálním fontem) - píše se tak, jak je zapsána: Konvence • Pevná část příkazu (neproporcionálním fontem) - píše se tak, jak je zapsána: man [-k] [section] topic. . . • Proměnlivá část příkazu (kurzívou) - doplní se požadovaný text (slovo, číslo apod. ): man [-k] [section] topic. . . . . • Volitelná část příkazu: man [-k] [section]. . . . . topic • Výběr z více variant: {BEGIN | END | /regexp/ | cond | } { cmds }. . . . Operační systém typu UNIX 5

Historie UNIXu • 1925 - Bell Laboratories - výzkum v komunikacích • 60. léta Historie UNIXu • 1925 - Bell Laboratories - výzkum v komunikacích • 60. léta - s General Electric a MIT vývoj OS Multics (MULTIplexed Information and Computing System) • 1969 - Bell Labs opouští projekt, Ken Thompson píše asembler, základní OS a systém souborů pro PDP-7 • 1970 - Multi-cs => Uni-x (snad Brian Kernighan) • 1971 - Thompson žádá nový počítač PDP-11 pro další vývoj - zamítnuto • Thompson předstírá vývoj systému automatizované kanceláře - počítač přidělen - zpracování textů • 1973 - UNIX přepsán do jazyka C vytvořeného za tím účelem Dennisem Ritchiem Operační systém typu UNIX 6

Divergence UNIXu • pol. 70. let - uvolňování UNIXu na univerzity: především University of Divergence UNIXu • pol. 70. let - uvolňování UNIXu na univerzity: především University of California Berkeley • 1979 - v Berkeley přepisují UNIX pro 32 bitový VAX BSD Unix (Berkeley System Distribution) verze 3. 0; dnes verze 4. 4 • Bell Labs přecházejí pod AT&T a pokračují ve vývoji verze III až V. 4 - tzv. SVR 4 • UNIX uvolněn i pro komerci: Microsoft a SCO vyvíjejí pro Intel XENIX • vznikají UNIX International, OSF (Open Software Foundation), X/OPEN, . . . Operační systém typu UNIX 7

Tady bude mapa historie UNIXu Operační systém typu UNIX 8 Tady bude mapa historie UNIXu Operační systém typu UNIX 8

Současné UNIXy • • SUN: Sun OS, Solaris Silicon Graphics: Irix DEC: Ultrix, Digital Současné UNIXy • • SUN: Sun OS, Solaris Silicon Graphics: Irix DEC: Ultrix, Digital Unix IBM: AIX HP: HP-UX Siemens Nixdorf: SINIX Novell: UNIXware SCO: SCO Unix • Free. BSD • Linux Operační systém typu UNIX 9

Standardy UNIXu • SVID (System V Interface Definition) – “fialová kniha”, kterou AT&T vydala Standardy UNIXu • SVID (System V Interface Definition) – “fialová kniha”, kterou AT&T vydala poprvé v roce 1985 jako standard, jehož splnění je nutnou podmínkou pro použití obchodního názvu UNIX • POSIX (Portable Operating System based on UNIX) – série standardů organizace IEEE značená P 1003. xx, postupně je přejímá vrcholový nadnárodní orgán ISO • XPG (X/Open Portability Guide) – doporučení konsorcia X/Open, které bylo založeno v r. 1984 předními výrobci platforem • Single UNIX Specification – standard organizace Open Group, vzniklé v roce 1996 sloučením X/Open a OSF – dnes Version 2 (UNIX 98) – splnění je nutné pro užití obchodního názvu UNIX Operační systém typu UNIX 10

Charakteristika UNIXu • • • otevřený operační systém poučení ale nezatížení minulostí akademické prostředí Charakteristika UNIXu • • • otevřený operační systém poučení ale nezatížení minulostí akademické prostředí uživatel, skupina proces, komunikace systém souborů interpret příkazů, grafické prostředí utility, jazyk C přenositelnost, modifikovatelnost síťová podpora volně šiřitelný SW (např. GNU) příkaz man Operační systém typu UNIX 11

Modely OS Správa procesoru Správa paměti I/O modul Systémové programy Aplikace Klasický OS Klientský Modely OS Správa procesoru Správa paměti I/O modul Systémové programy Aplikace Klasický OS Klientský proces . . . Klientský proces UNIX Systémový proces . . . Systémový proces Systémová volání Jádro Distribuovaný OS Klientský proces File server Terminál server Proces server Jádro Jádro Operační systém typu UNIX . . . 12

Funkce jádra OS • Řízení provádění procesů (vytváření, ukončení, suspendování, komunikace, přístup k periferiím, Funkce jádra OS • Řízení provádění procesů (vytváření, ukončení, suspendování, komunikace, přístup k periferiím, . . . ) • Správa systému souborů (alokace, uvolňování, ochrana, udržování konzistence, . . . ) • Přidělování paměti, ochrana paměti, odkládání dočasně nepoužívané paměti (swapping resp. paging) • Plánování procesů pro sdílení času CPU (plánovací algoritmus, přidělování časových kvant, priority, . . . ) Operační systém typu UNIX 13

HW požadavky • Možnost běhu procesu ve dvou režimech: – uživatelský (user mode): omezený HW požadavky • Možnost běhu procesu ve dvou režimech: – uživatelský (user mode): omezený přístup k paměti, instrukcím, . . . – privilegovaný režim (kernel mode) • Hierarchické ošetření přerušení a výjimek, např. : – – – HW chyby časovač disky síť terminály SW přerušení • Správa paměti - oddělení virtuálního a skutečného adresního prostoru Operační systém typu UNIX 14

Jednotný hierarchický systém souborů /. . . etc usr dev home . . tty Jednotný hierarchický systém souborů /. . . etc usr dev home . . tty Operační systém typu UNIX 15

Strom adresářů • • • man hier /bin - základní systémové příkazy /dev - Strom adresářů • • • man hier /bin - základní systémové příkazy /dev - speciální soubory (zařízení, devices) /etc - konfigurační adresář /lib - základní systémové knihovny /tmp - veřejný adresář pro dočasné soubory /u, /home - kořen domovských adresářů /usr/include - knihovny headerů pro C /usr/local - lokální soubory /usr/man - manuálové stránky /usr/spool - spool (pošta, tisk, . . . ) /var - soubory s variabilní velikostí Operační systém typu UNIX 16

Interpret příkazů (shell) • základní program pro komunikaci s UNIXem • nezávislá komponenta systému: Interpret příkazů (shell) • základní program pro komunikaci s UNIXem • nezávislá komponenta systému: více shellů • formát příkazů: příkaz -přepínače parametry př. ls -l /etc • metaznaky, např. : ls *. c > zdrojaky. txt • umožňuje přímé programování; skripty sh test. sh Operační systém typu UNIX 17

Proces, komunikace • Proces – zjednodušeně: běžící uživatelský nebo systémový program – vzniká duplikací Proces, komunikace • Proces – zjednodušeně: běžící uživatelský nebo systémový program – vzniká duplikací rodičovského procesu • Komunikace – při startu otec předává data synovi, naopak nelze! – roura - tok dat od producenta ke konzumentu: ls | more – další prostředky (např. sdílená paměť) Operační systém typu UNIX 18

Virtuální paměť procesu 1 paměť procesu 2 paměť procesu 3 paměť procesu 4 swap Virtuální paměť procesu 1 paměť procesu 2 paměť procesu 3 paměť procesu 4 swap reálná paměť Operační systém typu UNIX 19

Příkaz man • Volání: man [-k] [section] topic • Sekce manuálových stránek: 1 2 Příkaz man • Volání: man [-k] [section] topic • Sekce manuálových stránek: 1 2 3 4 5 6 7 8 uživatelské příkazy služby jádra systému knihovní funkce jazyka C zařízení a ovladače zařízení formáty souborů triviální aplikační programy různé administrátorské příkazy Operační systém typu UNIX 20

Seznam uživatelů (/etc/passwd) forst: x: 1004: 11: Libor Forst: /home/forst: /bin/sh Význam jednotlivých polí: Seznam uživatelů (/etc/passwd) forst: x: 1004: 11: Libor Forst: /home/forst: /bin/sh Význam jednotlivých polí: • uživatelské jméno • dříve zakódované heslo, nyní v /etc/shadow • • • číslo (UID); superuživatel (root) má UID 0 číslo (GID) primární skupiny plné jméno domovský adresář login-shell Operační systém typu UNIX 21

Seznam skupin (/etc/group) users: : 11: operator, novak Význam jednotlivých polí: • jméno skupiny Seznam skupin (/etc/group) users: : 11: operator, novak Význam jednotlivých polí: • jméno skupiny • nepoužito (původně heslo skupiny) • číslo skupiny (GID) • seznam členů skupiny Ve skupině jsou navíc i všichni uživatelé, kteří ji mají uvedenu jako svoji primární skupinu. Operační systém typu UNIX 22

Uživatelská relace Po přihlášení k systému se uživateli spustí jeho shell. Tím se zahájí Uživatelská relace Po přihlášení k systému se uživateli spustí jeho shell. Tím se zahájí jeho uživatelská relace (session). • • ukončení session: logout změna uživatele: login user dočasná změna uživatele: su [-] [user] ukončení su: exit zjištění identity uživatele: id, whoami, who am i výpis nalogovaných uživatelů: who, w výpis logu relací: last Operační systém typu UNIX 23

Komunikace mezi uživateli • on-line zprávy: – zaslání: write user – potlačení příjmu: mesg Komunikace mezi uživateli • on-line zprávy: – zaslání: write user – potlačení příjmu: mesg [ y | n ] • on-line rozhovor: – příkaz: talk user[@host] • off-line zprávy: – posílání: mail [-v ] [-ssubject ] email. . . – příjem: mail, pine, elm, mutt – přesměrování: $HOME/. forward [email protected] mff. cuni. cz ”| /usr/local/bin/filter” Operační systém typu UNIX 24

Systém souborů • • hierarchický systém jednotný přístup k zařízením, adresářům diskové svazky, síťové Systém souborů • • hierarchický systém jednotný přístup k zařízením, adresářům diskové svazky, síťové disky synchronizace (sync, fsck) ochrana souborů jména (znaková sada, délka) textové soubory () Operační systém typu UNIX 25

Příkaz ls -rwxr-x--x 2 forst users 274 Jan 5 17: 11 test typ práva Příkaz ls -rwxr-x--x 2 forst users 274 Jan 5 17: 11 test typ práva počet linků vlastník, skupina délka souboru v bytech datum a čas poslední modifikace jméno souboru volby: dlouhý výpis (l), krátký výpis do 1 sloupce (1), psát i skryté (a), vypsat/potlačit skupiny (g), třídit podle času (t), třídit pozpátku (r), značit typ souboru (F), rekurze (R) resp. jen adresáře (d), sledovat linky (L) Operační systém typu UNIX 26

Typy souborů • • • plain file: posloupnost bytů (-) directory: seznam jmen souborů Typy souborů • • • plain file: posloupnost bytů (-) directory: seznam jmen souborů (d) speciální zařízení - device (b, c) symbolické linky (l) pojmenované roury - pipe (p) sockety (s) • příkaz file Operační systém typu UNIX 27

Přístupová práva • tři kategorie: vlastník (u), skupina (g), ostatní (o); platí vždy nejspeciálnější Přístupová práva • tři kategorie: vlastník (u), skupina (g), ostatní (o); platí vždy nejspeciálnější kategorie, v níž je uživatel • tři práva: čtení (r), zápis (w), provádění souboru resp. přepnutí se do adresáře (x) • set. UID, set. GID (s) proveditelné soubory: propůjčení identity (skupiny) vlastníka • set. GID pro soubor bez práva spuštění pro skupinu: kontrola zámků při každém přístupu (výpis: S) • sticky bit (t) pro spustitelné soubory: ponechání souboru v paměti • sticky bit pro adresáře: práva k souborům mají jen vlastníci souborů a nikoli vlastníci adresáře • set. GID pro adresář: nové soubory budou mít stejnou skupinu jako adresář Operační systém typu UNIX 28

Změna přístupových práv vlastník (u) skupina (g) ostatní (o) suid sgid 4 2 1 Změna přístupových práv vlastník (u) skupina (g) ostatní (o) suid sgid 4 2 1 r sticky w x • změna práv: chmod [-R] +w, o=rx file. . . chmod [-R] 775 file. . . • změna vlastníka: chown, chgrp • defaultní maska: umask_complement • shell s novou defaultní skupinou: newgrp group Operační systém typu UNIX 29

Organizace disku • Fyzická: sektor, stopa, cylindr, povrch • Logická: partition (~device), příkaz df Organizace disku • Fyzická: sektor, stopa, cylindr, povrch • Logická: partition (~device), příkaz df • Systémová: filesystem – – boot blok superblok(y) I-list (seznam I-nodů) datové bloky • Obraz systému souborů v paměti (sync, fsck) Operační systém typu UNIX 30

Index node • Každý soubor na disku má právě jeden I-node, který obsahuje: – Index node • Každý soubor na disku má právě jeden I-node, který obsahuje: – – – počet linků vlastník, skupina přístupová práva typ souboru velikost souboru čas • poslední modifikace souboru • posledního přístupu k souboru • poslední modifikace I-nodu – odkazy na datové bloky • Výpis seznamu souborů s čísly I-nodů: ls -i Operační systém typu UNIX 31

Linky Hard link Originál Soft link /var /etc /usr passwd. . . I-list 0 Linky Hard link Originál Soft link /var /etc /usr passwd. . . I-list 0 20 . . . passwd. . . 20 20 . . . root: x: 0: 0: . . . ln /etc/passwd Operační systém typu UNIX passwd. . . 31 31 . . . /etc/passwd ln -s. . /etc/passwd (zacyklení: Too many symlinks) 32

Adresace datových bloků Tabulka přímých odkazů v I-node 0 1 2 . . . Adresace datových bloků Tabulka přímých odkazů v I-node 0 1 2 . . . 9 10 11 12 Blok nepřímých odkazů 1. řádu Blok nepřímých odkazů 2. řádu Blok nepřímých odkazů 3. řádu Datové bloky Operační systém typu UNIX 33

Obecné příkazy • • kopírování souboru: cp [-pr] přesun n. přejmenování souboru: mv smazání Obecné příkazy • • kopírování souboru: cp [-pr] přesun n. přejmenování souboru: mv smazání souboru: rm [-rfi] změna data a času: touch {-tčas | -rsoubor | } změna aktuálního adresáře: cd výpis aktuálního adresáře: pwd vytvoření adresáře: mkdir [-p] zrušení adresáře: rmdir • není undelete ! Operační systém typu UNIX 34

Výpis souboru • • zřetězení souborů: cat [-nv] [files] výpis souborů po stránkách: more, Výpis souboru • • zřetězení souborů: cat [-nv] [files] výpis souborů po stránkách: more, pg, less výpis začátku souboru: head [-n] [files] výpis konce souboru: tail { | -n | +n | -f } [files] výpis souboru pro tisk: pr počet bytů, slov a řádek: wc [-cwl] kopírování na výstup a do souboru: tee [-a] file • výpis binárního souboru: od, hd, strings • výpis s formátem: hexdump [-e formát] formát: [[repeat]/[byte_count]] ”format”. . . Operační systém typu UNIX 35

Příkaz more • Volání: more [-n] { +line | +/regexp | } [files] • Příkaz more • Volání: more [-n] { +line | +/regexp | } [files] • Příkazy (* - může předcházet prefix počtu k): – – – – mezera, d. . . další stránka, půl stránky (*) return. . . další řádka (* - k nastaví default) s, f, b. . . přeskoč k řádek, stránek zpět (*) /regexp, n. . . hledej k-tý výskyt řetězce (*) ’. . . návrat na začátek hledání !cmd, v. . . start shellu, editoru =, h. . . výpis pozice, helpu : n, : p. . . přechod na další soubor Operační systém typu UNIX 36

Příkaz find • volání: • podmínky: – – – find cesta. . . podmínka. Příkaz find • volání: • podmínky: – – – find cesta. . . podmínka. . . akce name, size, type user, group, perm atime, ctime, mtime, newer negace (!), -o, -a, závorky hodnoty: n, +n, -n • akce: – print; někdy default – exec; jméno souboru: {}, ukončení příkazu: středník • příklad: find / -name core -mtime +7 -exec rm {} ; • zkratky: which, whereis, locate Operační systém typu UNIX 37

Archivace • archivace adresářů: tar {c | t | x} [f file] - př. Archivace • archivace adresářů: tar {c | t | x} [f file] - př. : tar cf archiv. tgz /etc • komprese souborů - standardní (. Z): compress - GNU (. gz): gzip, gunzip • další příkazy: cpio, dd • systémová záloha: dump, restore • zálohování po síti: rdump, rrestore • práce s páskou: mt {fsf n | bsf n | rewind} Operační systém typu UNIX 38

Zpracování textu • porovnávání souborů resp. adresářů: diff [ -bwi ] { -e | Zpracování textu • porovnávání souborů resp. adresářů: diff [ -bwi ] { -e | -cn | -rs } file 1 file 2 • výběr polí z řádek souboru (nemění pořadí polí): cut { -clist | -flist -dchar } [files] • spojení souborů „po sloupcích“ resp. řádek souboru: paste [[ -s ] -dchar ] [files] • rozdělení souboru po řádcích: split [{ -llines | -bbytes[{k|m}] }] [ file [ name ] ] • konverze znaků: tr [-cds] table 1 [table 2] př. : tr "A-Z" "a-z" Operační systém typu UNIX 39

Příkaz sort • Volání: sort [-bidfnr] [+pos 1[-pos 2]] [-td] [-uc] [files] • Zadání Příkaz sort • Volání: sort [-bidfnr] [+pos 1[-pos 2]] [-td] [-uc] [files] • Zadání třídícího pole: – pos 1. . . první znak, pos 2. . . první znak za – tvar field[. char]. . . číslování od 0, 0 je default • Modifikátory: b (bez mezer), i (ignoruj > 127), d (ignoruj nealfanum. znaky), f (ignorcase), n (čísla), r (opačně) • Přepínače: t (oddělovač pole), u (vyluč stejné klíče), c (jen kontroluje uspořádání) • Modifikátory u klíčů (pozice se číslují od 1!): sort -kpos 1[, pos 2][mod] [files] Operační systém typu UNIX 40

Příkaz grep • název: g/re/p • varianty: – egrep (extended - rozšířené regulární výrazy) Příkaz grep • název: g/re/p • varianty: – egrep (extended - rozšířené regulární výrazy) – fgrep (fast - pouze řetězec, ale ne jen jeden) – a některé další (např. GNU) • volby: -c(ount), -l(istfiles), -n(umber) -i(gnorecase), -w(ord) -v. . . vypisuje řádky, na nichž vzor nebyl nalezen -e expression, -f filename -lines. . . počet vypsaných řádek před a po nalezené (není UNIXový standard) Operační systém typu UNIX 41

Proces • prováděný program. . . proces • kontext procesu – paměť, soubory, proměnné, Proces • prováděný program. . . proces • kontext procesu – paměť, soubory, proměnné, . . . • rodičovský proces synovský proces • komunikace – signály, roury, sockety, sdílená paměť, . . . • PID, příkaz ps Operační systém typu UNIX 42

Kontext procesu • z hlediska uživatele – kód, data, zásobník – otevřené soubory – Kontext procesu • z hlediska uživatele – kód, data, zásobník – otevřené soubory – systémové proměnné (environment) • z hlediska systému – obecné registry, programový čítač, stavový registr procesoru, ukazatel do zásobníku, registry pro operace v pohyblivé řádové čárce, registry mapování paměti – pamět, kterou proces dosud adresoval v uživatelském režimu – paměť v prostoru jádra, která je s daným procesem spojena (např. systémový zásobník procesu) Operační systém typu UNIX 43

Vznik procesu rodič (PID 1) PID 2 syn (PID 2) fork() data zásobník 0 Vznik procesu rodič (PID 1) PID 2 syn (PID 2) fork() data zásobník 0 zásobník Operační systém typu UNIX 44

Funkce na vytváření procesů • fork() … vytváří kopii rodičovského procesu • exec() … Funkce na vytváření procesů • fork() … vytváří kopii rodičovského procesu • exec() … překryje adresní prostor procesu zadaným programem • wait() … (rodičovský proces) čeká na skončení potomků • exit() … ukončí proces a aktivuje rodičovský proces Operační systém typu UNIX 45

Uživatelská relace fork() init getty exec() login: passwd: exec() sh $ fork() wait() ftp> Uživatelská relace fork() init getty exec() login: passwd: exec() sh $ fork() wait() ftp> exit() PID 1 Operační systém typu UNIX PID 271 PID 312 46

Stavy procesu tabulka procesů fork READY (IDLE) ZOMBIE exit RUN user volání jádra, interrupt Stavy procesu tabulka procesů fork READY (IDLE) ZOMBIE exit RUN user volání jádra, interrupt Operační systém typu UNIX swapout swapin wakeup RUN kernel sleep SWAPPed swapout swapin SLEEPing 47

Příkaz ps • PID, TTY, STAT, TIME a COMMAND vlastních procesů BSD System. V Příkaz ps • PID, TTY, STAT, TIME a COMMAND vlastních procesů BSD System. V -a (all users) • cizí procesy: -x (no terminal) -p PID • plný výpis: -t tty -l (long) -u (usage) -e (všechny) -U user -l (long) -f (full) -okey, … (pouze vyjmenované) -Okey, … (vyjmenované navíc) • třídění: Operační systém typu UNIX (mj. existuje PD -r (cpu) -m (memory) program top) 48

Proces a I/O • přístup ke vstupním a výstupním souborům přes tzv. file-descriptory 0 Proces a I/O • přístup ke vstupním a výstupním souborům přes tzv. file-descriptory 0 1 2 - standardní vstup (stdin) standardní výstup (stdout) standardní chybový výstup (stderr) …- další otevírané soubory stderr stdout 2 1 stdin 0 Operační systém typu UNIX 49

Komunikace mezi procesy • zasílání signálů • vstup/výstup přes roury • System V Interprocess Komunikace mezi procesy • zasílání signálů • vstup/výstup přes roury • System V Interprocess Communication – semafory – zasílání zpráv – sdílená paměť • BSD Sockets – zasílání zpráv, vytváření proudů – v rámci jednoho systému i po síti Operační systém typu UNIX 50

Roury (pipes) • v shellu - spojení vstupu a výstupu dvou procesů stdout ls Roury (pipes) • v shellu - spojení vstupu a výstupu dvou procesů stdout ls 1 pipe | 0 stdin more • v programu: – roura s externím příkazem: popen, pclose – roura mezi subprocesy: pipe • trvalé (pojmenované) roury – začleněny do systému souborů, typ p – vytvářejí funkce/příkazy mknod resp. mkfifo Operační systém typu UNIX 51

Signály • zaslání signálu: – příkaz kill [-signál] PID – funkce kill • ošetření Signály • zaslání signálu: – příkaz kill [-signál] PID – funkce kill • ošetření signálu: – – shell-příkaz trap [příkaz] signal. . . funkce signal standardní handlery: SIG_IGN, SIG_DFL, SIG_ERR nemaskovatelné signály: KILL, STOP • výpis signálů: kill -l Operační systém typu UNIX 52

Nejdůležitější signály HUP(1) restart programu INT(2), QUIT(3) přerušení (^C, ^) ILL(4) chybná instrukce ABRT(6) Nejdůležitější signály HUP(1) restart programu INT(2), QUIT(3) přerušení (^C, ^) ILL(4) chybná instrukce ABRT(6) volání funkce abort FPE(8) aritmetická chyba KILL(9) (nemaskovatelné) ukončení procesu SEGV(11) chyba adresace SYS(12) chybné volání systému ALRM(14) přerušení od časovače TERM(15) (maskovatelné) ukončení procesu (kill) STOP(17), TSTP(18), CONT(19) zastavení a spuštění procesu CHLD(20) ukončení syna USR 1(30), USR 2(31) uživatelské signály Operační systém typu UNIX 53

Synchronizace • Pokud dva procesy sdílejí nějaký zdroj, je nutné současný přístup ke kritickým Synchronizace • Pokud dva procesy sdílejí nějaký zdroj, je nutné současný přístup ke kritickým sekcím programů ošetřit zámkem • Test zámku a jeho nastavení musí být nepřerušitelná dvojice operací provádět v privilegovaném režimu • Synchronizace přes soubor: – program se pokusí vytvořit tzv. lock soubor - pokud se to nepodaří, je zdroj zamčen – po skončení programu se soubor smaže – problém: po havárii soubor nadále existuje řešení: do souboru se napíše PID procesu – problém: aktivní čekání na uvolnění zdroje Operační systém typu UNIX 54

System V Interprocess Communication • semafory: – zobecnění P a V operací [Dijkstra, Dekker] System V Interprocess Communication • semafory: – zobecnění P a V operací [Dijkstra, Dekker] – ošetření dead-locku, havárie procesu – funkce: semget, semop, semctl • zasílání zpráv: – systém vytvoří komunikační kanál daného čísla – funkce: msgget, msgsnd, msgrcv, msgctl • sdílená paměť: – systém přidá procesu do tabulky žádanou oblast – funkce: shmget, shmat, shmdt, shmctl Operační systém typu UNIX 55

BSD Sockets Socket - jeden konec kanálu pro klient-server komunikaci Systémové funkce: - socket BSD Sockets Socket - jeden konec kanálu pro klient-server komunikaci Systémové funkce: - socket vytváří deskriptor podle – domény (address family): AF_UNIX, AF_ INET – typu: virtuální okruh (stream), datagram - bind přiřazuje vlastní adresu: – UNIX: jméno, INET: IP adresa, port - listen zahájí příjem zpráv (mj. stanoví délku fronty) - accept otevírá kanál ke klientovi - connect navazuje spojení se servrem Operační systém typu UNIX 56

Terminál • uživatel komunikuje se systémem prostřednictvím terminálu - buďto skutečného nebo pseudoterminálu • Terminál • uživatel komunikuje se systémem prostřednictvím terminálu - buďto skutečného nebo pseudoterminálu • vlastnosti v /etc/termcap resp. /etc/terminfo • typ terminálu v proměnné TERM • inicializace terminálu příkazem tset • změna vlastností příkazem stty (např. stty erase znak) • přístup na vlastní terminál přes zařízení /dev/tty Operační systém typu UNIX 57

Řídící znaky • některé lze předefinovat, některé závisí na shellu konzistence terminálu a shellu Řídící znaky • některé lze předefinovat, některé závisí na shellu konzistence terminálu a shellu • typické sekvence: Ctrl+H Ctrl+S Ctrl+Q Ctrl+C Ctrl+ - Ctrl+D Ctrl+Z - Operační systém typu UNIX backspace pozastavení výpisu pokračování výpisu ukončení procesu (SIGINT) dtto s dumpem (SIGQUIT) konec vstupního souboru suspendování procesu (SIGTSTP) další spuštění: fg resp. bg 58

Práce s časem • spuštění programu s měřením času: time command • pozastavení běhu: Práce s časem • spuštění programu s měřením času: time command • pozastavení běhu: sleep seconds • výpis aktuálního data a času: date [ +format ] Formát (shodný s funkcí strftime): text s %-direktivami – a. Ab. B. . . krátké/dlouhé jméno dne/měsíce – dmy. YHMS. . . datum a čas číselně – u. UVj. C. . . číslo dne v týdnu, týdne, dne v roce, století – cx. X. . . “normální” tvar data a času Operační systém typu UNIX 59

Neinteraktivní zpracování • spuštění příkazu se zablokovaným signálem HUP a QUIT a výstupem do Neinteraktivní zpracování • spuštění příkazu se zablokovaným signálem HUP a QUIT a výstupem do $HOME/nohup. out nohup command • spuštění příkazu v určený čas (uživateli musí být povoleno v souborech at. allow resp. at. deny, výstup jde uživateli mailem): at {-t mmdd. HHMM | time [+incr ] } command příkaz umožňuje vypisovat (-l) a mazat (-r) joby • dtto pravidelné spouštění pomocí démona cron: crontab [-l] příklad záznamu: 0 1 * * 1 -2, 5 /usr/sbin/backup Operační systém typu UNIX 60

Příkaz ping • Testuje dostupnost a odezvu zasláním dat • ICMP ECHO_REQUEST/ECHO_REPLY • varianty: Příkaz ping • Testuje dostupnost a odezvu zasláním dat • ICMP ECHO_REQUEST/ECHO_REPLY • varianty: – ping (IPv 4) – ping 6 (IPv 6) • volby: -c(ount), -f(lood), -s(ize), -a(udible) -I(nterval), -b(roadcast), -I(nterface), -q(uiet) • ping ftp. volny. cz • ping 195. 250. 128. 34 Operační systém typu UNIX 61

Příkaz traceroute • Zjišťuje cestu paketů sítí • Postupně zvyšuje TTL (time to live) Příkaz traceroute • Zjišťuje cestu paketů sítí • Postupně zvyšuje TTL (time to live) paketu • varianty: – traceroute (IPv 4) – traceroute 6 (IPv 6) • volby: -i(nterface), -m(ax TTL) $ /usr/sbin/traceroute www. vol. cz traceroute to www. vol. cz (195. 250. 155. 29), 30 hops max, 38 byte packets 1 ns. kolej. mff. cuni. cz (195. 113. 25. 222) 0. 307 ms 0. 198 ms 0. 201 ms 2 getroja-kolejmff. pasnet. cz (195. 113. 69. 85) 0. 675 ms 0. 713 ms 0. 725 ms 3 geruk-getroja. pasnet. cz (195. 113. 68. 205) 0. 652 ms 0. 497 ms 0. 573 ms 4 geruk-geovc. pasnet. cz (195. 113. 68. 238) 0. 593 ms 0. 630 ms 0. 646 ms 5 cesnet-geovc. pasnet. cz (195. 113. 69. 54) 0. 803 ms 0. 589 ms 0. 788 ms 6 r 41 prg-pos 13 -0 -stm 16. cesnet. cz (195. 113. 156. 110) 1. 134 ms 0. 896 ms 0. 690 ms 7 nix 1. vol. cz (194. 50. 100. 20) 1. 665 ms 1. 242 ms 1. 311 ms 8 www. vol. cz (195. 250. 155. 29) 1. 126 ms 1. 653 ms 1. 715 ms Operační systém typu UNIX 62

Příkaz host • • • Překlad mezi IP a symbolickými jmény Jednodušší než nslookup Příkaz host • • • Překlad mezi IP a symbolickými jmény Jednodušší než nslookup DNS (/etc/resolv. conf) použití: host [server] volby: -t(ype) $ host 195. 250. 128. 34 34. 128. 250. 195. in-addr. arpa domain name pointer ns. vol. cz. $ host www. vol. cz has address 195. 250. 155. 29 Operační systém typu UNIX 63

Příkaz netstat • • Vypisuje různé síťové informace Routovací tabulka Otevřené porty a navázaná Příkaz netstat • • Vypisuje různé síťové informace Routovací tabulka Otevřené porty a navázaná spojení volby: -r(oute), -n(umeric), -a(ll) $ netstat -rn Smìrovací tabulka v jádru pro IP Adresát Brána Maska Pøízn MSS Okno 195. 113. 24. 0 0. 0 255. 252. 0 U 0 0 127. 0. 0 255. 0. 0. 0 U 0 0 0. 0 195. 113. 25. 222 0. 0 UG 0 0 Operační systém typu UNIX irtt 0 0 0 Rozhraní eth 0 lo eth 0 64

Příkaz route • Modifikuje směrovací tabulku IP protokolu • použití: route add default gw Příkaz route • Modifikuje směrovací tabulku IP protokolu • použití: route add default gw mango-gw route add -net 192. 56. 76. 0 netmask 255. 0 dev eth 0 route delete 195. 250. 128. 34 • Vypsání routovací tabulky netstat -rn Operační systém typu UNIX 65

Příkaz ifconfig • • Konfiguruje síťová rozhraní UP/DOWN ifconfig <interface> [IP] [netmask] [options] Použití: Příkaz ifconfig • • Konfiguruje síťová rozhraní UP/DOWN ifconfig [IP] [netmask] [options] Použití: ifconfig eth 0 192. 168. 33. 11 nastaví IP adresu na rozhraní eth 0 ifconfig vypíše aktuální nastavení všech rozhraní ifconfig eth 0 vypíše aktuální nastavení rozhraní eth 0 Operační systém typu UNIX 66

Příkaz tcpdump • • Zobrazuje síťový provoz zachycený na rozhraní Síťové rozhraní v promiskuitním Příkaz tcpdump • • Zobrazuje síťový provoz zachycený na rozhraní Síťové rozhraní v promiskuitním módu Nutno být root nebo suid bit na binárce použití: tcpdump iface host 192. 168. 1. 1 tcpdump iface dst mail. vsfs. cz • Volby -n(umeric), -w(rite raw packets to) file • Standardní formát se kterým umí pracovat i jiné programy (ethereal, trafshow. . . ) Operační systém typu UNIX 67

Příkaz arp • • Modifikuje a vypisuje arp tabulku počítače ARP = address resolution Příkaz arp • • Modifikuje a vypisuje arp tabulku počítače ARP = address resolution protocol Tabulka IP adresa, MAC adresa Cache záznamů, co nemám zjistím „arp who-has“ dotazem • volby: arp –a(ll), -n(umeric) arp –d(elete) Vypsání arp tabulky arp –an Vymazání arp tabulky arp -ad Operační systém typu UNIX 68

Shell • • základní program pro komunikaci s UNIXem nezávislá komponenta systému Bourne shell, Shell • • základní program pro komunikaci s UNIXem nezávislá komponenta systému Bourne shell, C shell, Korn shell zabudované příkazy metaznaky scripty proměnné Operační systém typu UNIX 69

Vývoj shellů Bourne shell (/bin/sh) Steven Bourne, 1979 C-shell (/bin/csh) Bill Joy, BSD UNIX Vývoj shellů Bourne shell (/bin/sh) Steven Bourne, 1979 C-shell (/bin/csh) Bill Joy, BSD UNIX Korn shell (/bin/ksh) David Korn, pol. 80. tcsh Bourne again shell (bash), GNU Operační systém typu UNIX 70

Základní příkazy shellu : comment- prázdný příkaz echo [-n] text - výpis řetězce (bez Základní příkazy shellu : comment- prázdný příkaz echo [-n] text - výpis řetězce (bez odřádkování) cd [dir ] - změna adresáře (vlastnost shellu) pwd - výpis jména aktuálního adresáře exit [rc] - ukončení shellu s návratovým kódem set přepínač - nastavení přepínačů shellu ulimit - nastavení uživatelských limitů umask [mask] - nastavení defaultního módu souborů Operační systém typu UNIX 71

Metaznaky • znaky se speciálním významem (např. *, >) • speciální význam se ruší Metaznaky • znaky se speciálním významem (např. *, >) • speciální význam se ruší (tzv. escape-sekvence) – znakem – uzavřením do uvozovek (neruší význam , $ a `) – uzavřením do apostrofů (ruší i význam ) • platí i pro speciální význam znaků: . . . namísto odeslání příkazu jen pokračovací řádka mezera. . . několik slov jako jeden parametr • pozor zvláště u složitějších příkazů (např. find. -name ”*. c” -print) • komentář: . . . #komentář Operační systém typu UNIX 72

Expanzní znaky Řetězec expanzních znaků se nahradí seznamem všech jmen souborů, které mu vyhovují. Expanzní znaky Řetězec expanzních znaků se nahradí seznamem všech jmen souborů, které mu vyhovují. - zastupuje libovolnou posloupnost znaků ? - zastupuje libovolný znak [a-f 0 -9] - zastupuje znak ze seznamu [!a-z] - zastupuje znak z doplňku seznamu * Bílé znaky a znaky !, ], - se do seznamu zapisují uvozené znakem . Expanzi provádí shell ! Expanze nezahrnuje úvodní tečku ve jméně souboru. Operační systém typu UNIX 73

Proměnné v shellu name=value cmd $name, ${name} substituce) - nastavení hodnoty (sh a ksh) Proměnné v shellu name=value cmd $name, ${name} substituce) - nastavení hodnoty (sh a ksh) - dočasné nastavení hodnoty - použití hodnoty (textová Výpis hodnoty proměnné: set, echo $name Proměnné jsou součástí environmentu. Synovskému procesu (subshell, roura) se předávají jen exportované proměnné (příkazem export variable). Syn nemůže modifikovat proměnné otce! Operační systém typu UNIX 74

Environmentové proměnné IFS PS 1, PS 2 PATH CDPATH TERM SHELL LOGNAME HOME MAIL Environmentové proměnné IFS PS 1, PS 2 PATH CDPATH TERM SHELL LOGNAME HOME MAIL - oddělovač polí (Internal Field Separator), implicitně: IFS= - prompt, prompt na pokračovací řádce - cesta: adresáře se spustitelnými soubory (aktuální adresář není implicitní!) - cesta pro příkaz cd - typ terminálu - prováděný shell - jméno uživatele - domovský adresář - soubor s poštou Operační systém typu UNIX 75

Příkazové soubory - skripty • přímé volání (práva +rx): script parametry • volání přes Příkazové soubory - skripty • přímé volání (práva +rx): script parametry • volání přes shell: sh [optiony] script parametry • vložené volání (běží na stejné úrovni shellu): . script • první řádek může obsahovat popis interpretu: #!cesta_k_interpretu [optiony] • startovací skripty: /etc/profile, . profile Operační systém typu UNIX 76

Práce s parametry, speciální proměnné $# - počet parametrů scriptu $0 - název scriptu Práce s parametry, speciální proměnné $# - počet parametrů scriptu $0 - název scriptu $n - n-tý parametr scriptu shift [n] - posun číslování parametrů set - text - nastavení nových parametrů př. : set - a + b $1=”a”, $2=”+”, $3=”b”, $#=3 $* [email protected] $? $$ $! - všechny parametry scriptu - dtto, ale ”[email protected]” je ”$1” ”$2”. . . - návratový kód posledního příkazu - PID tohoto shellu - PID posledního backgroundového jobu Operační systém typu UNIX 77

Přesměrování výstupu příkazu zápis přesměrování. . . cmd > file cmd 2> file standardního Přesměrování výstupu příkazu zápis přesměrování. . . cmd > file cmd 2> file standardního výstupu do souboru file chybového výstupu do souboru file př. : rm xxx 2> /dev/null cmd >> file standardního výstupu na konec souboru cmd 2>> file chybového výstupu na konec souboru cmd 2>&1 chybového výstupu do standardního, pozor na pořadí přesměrování: - grep xxx $soubor > log 2>&1 přesměruje oba výstupy do souboru log - grep xxx $soubor 2>&1 > log výstup do souboru log, chyby na výstup Operační systém typu UNIX 78

Kombinování příkazů • cmd 1 | cmd 2 – roura (pipe) mezi příkazy př. Kombinování příkazů • cmd 1 | cmd 2 – roura (pipe) mezi příkazy př. : ls -l *. c | wc -l • cmd 1; cmd 2 – sekvence příkazů • cmd 1 || cmd 2, cmd 1 && cmd 2 – podmíněná sekvence příkazů př. : rm aa && echo Soubor aa smazan • { cmd 1; cmd 2; } – skupina příkazů • (cmd 1; cmd 2) – provedení příkazů v subshellu př. : (cd wrk; rm *) Operační systém typu UNIX 79

Vícenásobné volání. . . `cmd`. . . příkazu př. : vložení výstupu příkazu cmd Vícenásobné volání. . . `cmd`. . . příkazu př. : vložení výstupu příkazu cmd do textu SHOST=`echo $LHOST | cut -f 1 -d. ` ß SHOST=pocitac Operační systém typu UNIX 80

Příkaz test • volání: test podmínka nebo [ podmínka ] • v případě pravdivé Příkaz test • volání: test podmínka nebo [ podmínka ] • v případě pravdivé podmínky vrací 0 • pozor na nenastavené proměnné, mezery apod. : správně: špatně: [ -z = "$x" ] [ -z = $x ], [-z="$x"] • logické operace (mají nepodmíněné vyhodnocování): – – konjunkce: disjunkce: negace: závorky: cond 1 -a cond 2 cond 1 -o cond 2 ! cond ( cond ) pozor - v shellu je nutno zrušit metavýznam Operační systém typu UNIX 81

Operátory příkazu test -f file -d file -L file -r file -w file -x Operátory příkazu test -f file -d file -L file -r file -w file -x file -s file -z str -n str 1 = str 2 str 1 != str 2 int 1 -eq int 2 - soubor file existuje - soubor file je adresář - soubor file je symbolický link - uživatel má k souboru file právo r - uživatel má k souboru file právo w - uživatel má k souboru file právo x - soubor file má nenulovou délku - řetězec str je prázdný - řetězec str je neprázdný - rovnost řetězců - nerovnost řetězců - rovnost čísel (-ne, -lt, -le, -gt, -ge) Operační systém typu UNIX 82

Příkaz expr • • • volání: expr opnd. A op opnd. B shell nemá Příkaz expr • • • volání: expr opnd. A op opnd. B shell nemá sám aritmetiku, práci s řetězci! logické operátory: =, <, >, <=, >=, != aritmetické operátory: +, -, *, /, % řetězcové operátory: – string : regexp resp. match string regexp – substr string pos len – length string – index string char Operační systém typu UNIX 83

Řídící struktury - if Syntax: Příklad: if příkaz then příkazy [elif příkaz then příkazy] Řídící struktury - if Syntax: Příklad: if příkaz then příkazy [elif příkaz then příkazy] [else příkazy] fi if mkdir tmp; then echo tmp vytvoren elif [ -d tmp ]; then echo tmp jiz existoval else echo tmp nejde vytvorit fi Operační systém typu UNIX 84

Řídící struktury - case Syntax: Příklad: case text in vzor 1 | vzor 2 Řídící struktury - case Syntax: Příklad: case text in vzor 1 | vzor 2 ) příkazy; ; *) příkazy; ; esac case $1 in -h | -? ) echo "Navod: . . . "; ; *. Z ) uncompress $1; ; '' ) echo "Chyba!"; exit; ; * ) compress $1; ; esac Operační systém typu UNIX 85

Řídící struktury - while, until Syntax: Příklad: while příkaz do příkazy break continue done Řídící struktury - while, until Syntax: Příklad: while příkaz do příkazy break continue done [< file ] while read line; do case $line in END ) break; ; #* ) continue; ; * ) eval $line; ; esac done < script Operační systém typu UNIX 86

Řídící struktury - for Syntax: Příklad: for var [in text] for x; do do Řídící struktury - for Syntax: Příklad: for var [in text] for x; do do case $x in -- ) break; ; příkazy - ) continue; ; break -f* ) file=${x#-f}; ; continue esac done Operační systém typu UNIX 87

Příkaz read • Příkazem read var načteme řádku ze vstupu do proměnné var; příkaz Příkaz read • Příkazem read var načteme řádku ze vstupu do proměnné var; příkaz vrací nulu v případě úspěchu (dá se použít např. v podmínce) • Pokud má příkaz více argumentů, čte postupně do jednotlivých proměnných pole vstupní řádky (do poslední proměnné zbytek); oddělovač polí udává hodnota proměnné IFS • Při spuštění z příkazové řádky čte z terminálu, ale lze jej přesměrovat (read var < file), naopak lze vynutit čtení z terminálu (read var

Řídící příkazy cmd & - provedení na pozadí wait - čekání na skončení procesu Řídící příkazy cmd & - provedení na pozadí wait - čekání na skončení procesu na pozadí jobs - výpis běžících jobů fg - přesunutí jobu na popředí bg - přesunutí jobu na pozadí exec cmd - ukončí shell a provede příkaz Operační systém typu UNIX 89

Funkce Definice funkce (příkazu) name: name(){ statements } • parametry se zadávají jako při Funkce Definice funkce (příkazu) name: name(){ statements } • parametry se zadávají jako při volání příkazu • uvnitř funkce jsou přístupné pomocí $#, $1 atp. • návratovou hodnotou je návratová hodnota posledního příkazu • priorita: funkce, interní příkazy, programy Operační systém typu UNIX 90

Kompilátor Volání: cc [options] soubor. . . gcc, g++ Nejdůležitější volby: -o soubor výstupní Kompilátor Volání: cc [options] soubor. . . gcc, g++ Nejdůležitější volby: -o soubor výstupní jméno -c pouze překlad (nelinkovat) -E pouze preprosesor (nepřekládat) -Olevel nastavení úrovně optimalizace -glevel nastavení úrovně ladicích informací -Djméno definuj makro preprocesor -Ujméno oddefinuj makro preprocesor -Iadresář umístění #include souborů -llib linkuj s knihovnou liblib. a -Lpath cesta pro knihovny (-llib) Operační systém typu UNIX 91

C - konvence *. c jména zdrojových souborů programů v C *. h jména C - konvence *. c jména zdrojových souborů programů v C *. h jména hlavičkových souborů (headerů) *. o přeložené moduly (object-moduly) a. out jméno proveditelného souboru jako výsledek úspěšné kompilace /usr/include kořen stromu systémových headerů /usr/lib*. a umístění knihoven object-modulů Operační systém typu UNIX 92

Program make • generátor příkazů • správa SW projektů • příklad (soubor Makefile): program: Program make • generátor příkazů • správa SW projektů • příklad (soubor Makefile): program: main. o util. o cc -o program main. o util. o main. o: main. c program. h cc -c main. c util. o: util. c program. h cc -c util. c • překlad potřebných souborů a slinkování programu: make [program] Operační systém typu UNIX 93

Syntaxe vstupního souboru (make) • popis závislostí cíle: targets : [files] • prováděné příkazy: Syntaxe vstupního souboru (make) • popis závislostí cíle: targets : [files] • prováděné příkazy: command • komentář: • pokračovací řádek: line-continuation Operační systém typu UNIX #comment line-beginning 94

Softwarové balíky • • Formáty: . tar. gz, . tgz, . rpm, . deb Softwarové balíky • • Formáty: . tar. gz, . tgz, . rpm, . deb Binární x zdrojové balíky (RPMS x SRPMS) Utility: pkg_add, rpm, urpmi a další i grafické nadstavby Mandrake (rpmdrake) – urpmi, urpme, rpm –q -a – urpmi. addmedia, urpmi. removemedia, urpmi. update – urpmq, urpmf • Instalace ze zdrojáků – tar xzvf balik. tgz – cd balik/ –. /configure [options] – make install Operační systém typu UNIX 95

Secure shell • ssh verze 1, 2 • Šifrované spojení se serverem (x telnet, Secure shell • ssh verze 1, 2 • Šifrované spojení se serverem (x telnet, rsh, rcp) • Autentizace heslem, privátním klíčem, OTP • • scp soubor [email protected] domena. cz: cesta/cil scp soubor 2 [email protected] domena. cz: cesta/ ssh –l uzivatel stroj, ssh [email protected] /home/student/. ssh/identity. pub /home/student/. ssh/known_hosts /home/student/. ssh/authorized_keys /etc/ssh_config, /etc/sshd_config Operační systém typu UNIX 96

The End Operační systém typu UNIX 97 The End Operační systém typu UNIX 97

Tisk BSD System. V • tisk: lpr [-d printer] [files] lp [-Pprinter] [files] • Tisk BSD System. V • tisk: lpr [-d printer] [files] lp [-Pprinter] [files] • výpis stavu tisku: lpq [-d printer] job lpstat job • zrušení tisku: lprm [-d printer] job cancel job [printer] • • popis „tiskáren“: /etc/printcap implicitní tiskárna: proměnná PRINTER spool-oblast: /var/spool/* formátování tisku: pr, mpage Operační systém typu UNIX 98

Editor vi • • visual editor vi geneze: ed ex vi celoobrazovkový editor dostupný Editor vi • • visual editor vi geneze: ed ex vi celoobrazovkový editor dostupný na všech UNIXech široká paleta příkazů malé nezbytné minimum příkazů editace kopie souboru volání: vi [-r. R] [files] Operační systém typu UNIX 99

Základní editace (vi) • • • vi soubor … vyvolání editoru i … zahájení Základní editace (vi) • • • vi soubor … vyvolání editoru i … zahájení vkládání textu vkládaný text … ukončení vkládání textu h, j, k, l … pohyb po textu /vzorek … hledání vzorku x, dd … mazání znaku, řádky A … vkládání na konec řádky J … spojení řádek ZZ, : x … ukončení editace : q! … zrušení editace Operační systém typu UNIX 100

Režimy práce vi i, a, I, A, o, O, s, S, cx, C, R Režimy práce vi i, a, I, A, o, O, s, S, cx, C, R , (^C) režim vstupu příkazový režim ZZ : , režim příkazů ex (: )q, (: )x Operační systém typu UNIX 101

Regulární výrazy (vi) Způsob definování řetězců v řadě příkazů (např. : vi). Speciální znaky: Regulární výrazy (vi) Způsob definování řetězců v řadě příkazů (např. : vi). Speciální znaky: • . … jakýkoliv znak mimo • c … metaznak použitý jako znak (např. : . je tečka) • [list], [^list] … jakýkoliv znak z výčtu, z doplňku př. : [a-z 0 -9_], [^]-\] • • • ^, $ … začátek a konec řádky <, > … začátek a konec slova exp* … libovolné opakování znaku daného výrazem exp{n}, exp{m, n} … opakování nkrát, m-nkrát (, ), n … část vzoru a její použití (např. v náhradě) př. : s/^([a-z]{1, }): : /1: nologin: / Operační systém typu UNIX 102

Příkazy pro pohyb (I) Před příkazy může předcházet opakovací faktor k – h (<BKSPC>), Příkazy pro pohyb (I) Před příkazy může předcházet opakovací faktor k – h (), j, k, l () … o k pozic ( , , , ) – w, b, e, W, B, E … o k slov (vpřed, vzad, na konec resp. bez interpunkce) – (, ), {, [[ … na začátek (následující) věty, §, sekce – + (), - … začátek následující (předchozí) řádky – $, 0, ^ … konec řádky, začátek, první nemezerový znak – fx, Fx, tx, Tx, ; , , …znak x na řádce (dopředu, dozadu), znak před x, znak za x, opakuj v opačném směru – /regexp, ? regexp, /, ? , n, N …hledání vzoru dopředu, dozadu, opakuj vzor, opakuj hledání, opakuj obráceně – ^F, ^B, ^D, ^U …stránka dopředu, dozadu, půl stránky Operační systém typu UNIX 103

Příkazy pro pohyb (II) Příkazy předchází absolutní hodnota k: – – – k| … Příkazy pro pohyb (II) Příkazy předchází absolutní hodnota k: – – – k| … k-tá pozice na řádce [k]H … posun na k-tou řádku na obrazovce [1] [k]L … posun na k-tou řádku od konce obrazovky [1] M … posun na prostřední řádku na obrazovce [k]G … posun na k-tou řádku souboru [poslední] Práce se značkou x (malé písmeno): – – ‘x … posun na pozici označenou značkou x ‘‘ … posun na poslední označenou pozici ’x … posun na začátek řádky se značkou x ’’ … posun na začátek naposledy označené řádky (označení se provede příkazem mx) Operační systém typu UNIX 104

Vkládání textu, opravy Před příkazy může předcházet opakovací faktor k i, a, I, A Vkládání textu, opravy Před příkazy může předcházet opakovací faktor k i, a, I, A … vkládání před (za) kurzor, řádku o, O … vkládání do nové řadky pod (nad) aktuální (open) ~ …změna malé/velké písmena pod kurzorem * rx …přepis znaku pod kurzorem znakem x * R …zahájení režimu vstupu v přepisovacím módu cm … náhrada textu od kurzoru do pozice dané příkazem pro pohyb m – cc, C … náhrada celé řádky resp. do konce řádky – s, S … smaž znak (řádku) a přejdi do režimu vstupu – – – Příkazy označené * nepřepínají do režimu vstupu. Operační systém typu UNIX 105

Mazání, práce s buffery Před příkazy může předcházet opakovací faktor k – x, X. Mazání, práce s buffery Před příkazy může předcházet opakovací faktor k – x, X. . . mazání znaku pod (před) kurzorem – dm … mazání textu od kurzoru do pozice dané příkazem pro pohyb m – dd, D … mazání celé řádky resp. do konce řádky Smazaný text se uloží do očíslovaného bufferu. – p, P … vložení bufferu za (před) kurzor (příp. řádku) – ”np, ”n. P … vložení n-tého posledního bufferu – ”xp, ”x. P … vložení bufferu x (x je malé písmeno) Jiný způsob vložení textu do (pojmenovaného) bufferu: – [”x]ym … vložení textu po pozici danou příkazem m – [”x]yy, [”x]Y … vložení řádky Operační systém typu UNIX 106

Další příkazy vi – – – – . … opakování posledního editačního příkazu u Další příkazy vi – – – – . … opakování posledního editačního příkazu u … zrušení efektu posledního editačního příkazu U … obnovení řádky do původního stavu J … slepení řádky s následující ^L, ^R … obnovení obrazovky o … přechod do celoobrazovkového režimu z, z. , z- … scrollování, aktuální řádka se octne na začátku (uprostřed, na konci) obrazovky ^E, ^Y … scrollování o řádku ^G … vypsání informace o poloze v editovaném souboru !m cmd, !!cmd … použití bloku textu jako vstup a vložení výstupu příkazu do textu @x … provedení příkazů uložených v bufferu x % … skok na odpovídající ), ], } nebo > ^W, ^V … (režim vstupu) smaž slovo, ulož speciální znak Operační systém typu UNIX 107

Řádkové editory základní editor dostupný i v diagnostickém režimu edituje kopii souboru, opravy je Řádkové editory základní editor dostupný i v diagnostickém režimu edituje kopii souboru, opravy je nutno zapsat příkazy ze vstupu (ed-skripty) - volání: ed soubor ex rozšíření edu součást vi sed rozšíření edu směrem k programování edituje vstupní proud, výsledek vypisuje editovací příkazy jsou součástí volání: sed příkazy [soubor. . . ] nebo: sed -f příkazový_soubor [soubor. . . ] ed Operační systém typu UNIX 108

ex - rozšíření příkazů (I) • adresy mohou být odděleny středníkem - první řádka ex - rozšíření příkazů (I) • adresy mohou být odděleny středníkem - první řádka se stává aktuální • rozšíření příkazu substitute – : s/regexp/repl/c … nahrazení s potvrzováním (y) – regexp metaznak ~. . . předchozí regexp – repl sekvence u, l, U, L. . . převod malá/velká (na celé slovo) • nové příkazy – : co (alias : t) – : count … indentace – : j(oin)[!] … spojení řádek, po. přidává dvě mezery, po ) žádnou, jinak jednu (!. . . bez mezer) – : ya(nk)[x], : pu(t)[x] … práce s (pojmenovanými) buffery Operační systém typu UNIX 109

ex - rozšíření příkazů (II) : sh, : !cmd … spuštění shellu, příkazu : ex - rozšíření příkazů (II) : sh, : !cmd … spuštění shellu, příkazu : so(urce) … provedení souboru : w, : w!, : w>> … zápis souboru (do read-only souboru) : x, : wq … zápis a ukončení editace : q, : q! … ukončení editace (bez uložení změn) : n[!], : e[!] [file] … editace dalšího souboru (% značí aktuální jméno souboru, # alternativní jméno), pojmenované buffery, poslední regexp a příkaz se nemažou – : ab word string, : una … zkratka – : map[!] {char |#n] string, : unm … mapování znaku resp. funkční klávesy (pro režim vstupu); řídící znaky přes ^V – – – Operační systém typu UNIX 110

Nastavení editoru vi Nastavování příkazem : set • autoindent, ai. . . odsazování nových Nastavení editoru vi Nastavování příkazem : set • autoindent, ai. . . odsazování nových řádek [noai] • directory=dir, dir. . . pracovní adresář [=/tmp] • ignorecase, ic. . . ignorecase při hledání [noic] • number, nu. . . čísla řádek [nonu] • shell=path, sh. . . cesta k shellu [=/bin/sh] • showmatch, sm. . . hledání závorek [nosm] • tabstop=n, ts. . . velikost tabelátoru [=8] • wrapscan, ws. . . hledání přes konec souboru [ws] • wrapmargin=n, wm. . . pravý okraj pro zalamování [=0] Operační systém typu UNIX 111

Předvolby ex a vi Před spuštěním editoru se provedou ex-příkazy uložené v: • proměnné Předvolby ex a vi Před spuštěním editoru se provedou ex-příkazy uložené v: • proměnné EXINIT • domovském adresáři ve scriptu. exrc • aktuálním adresáři ve scriptu. exrc pokud je nastavena volba exrc (implicitně vypnuta) Příkazy se zapisují bez úvodní dvojtečky (jako v ex). Operační systém typu UNIX 112

Podmíněná substituce proměnných zápis hodnota, je-li proměnná name definována nedefinována ${name: -value} $name value Podmíněná substituce proměnných zápis hodnota, je-li proměnná name definována nedefinována ${name: -value} $name value ${name: +value} value ““ ${name: =value} $name ${name: ? value} $name Operační systém typu UNIX value +nastavení name=value ““ +echo value a exit 113

Postup zpracování řádky 1. rozdělení řádky na atomy 2. zpracování řídících operátorů 3. zpracování Postup zpracování řádky 1. rozdělení řádky na atomy 2. zpracování řídících operátorů 3. zpracování operátorů přesměrování 4. náhrada proměnných 5. náhrada vložených příkazů 6. definice proměnných 7. rozdělení na pole 8. náhrada expanzních znaků 9. zrušení escape-sekvencí Operační systém typu UNIX 114

Makra (make) • definice makra: name = string • • • pokračování vkládá mezeru Makra (make) • definice makra: name = string • • • pokračování vkládá mezeru nedefinovaná makra jsou prázdná nezáleží na pořadí definic nelze předefinovat definice na příkazové řádce: make target name=string • vyvolání makra: $name, ${name} nebo (name) • systémové proměnné jsou makry Operační systém typu UNIX 115

Předdefinovaná makra Kromě standardních maker (__DATE__, __FILE__, __LINE__, __cplus, apod. ) jsou v UNIXu Předdefinovaná makra Kromě standardních maker (__DATE__, __FILE__, __LINE__, __cplus, apod. ) jsou v UNIXu zavedena další makra jako unix je vždy definováno v prostředí UNIXu mips, i 386, . . . hardwarová architektura __osf__, . . . klon operačního systému Sun. OS verze operačního systému _POSIX_SOURCE, _XOPEN_SOURCE, _ANSI_C_SOURCE překlad podle příslušné normy Operační systém typu UNIX 116