Úvod do UNIXu (5th round)

Slides:



Advertisements
Podobné prezentace
UŽIVATEL, SKUPINA, PROCES Systém bez uživatele je jedině Matrix? Uživatelé se seskupují a řídí práci. SPŠ Teplice - 3.V.
Advertisements

Počítačové modelování dynamických soustav
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Programování v C jazyku - SEMINÁŘ
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Operační systém UNIX Soubory a adresářová struktura Roman Danel
Ať žije BASH. V této lekci nakoukneme do základů shellu Bash. SPŠ Teplice - 3.V PRACUJEME S SHELLEM.
Vytváření, použití dávkových souborů
VISUAL BASIC Práce se soubory.
Správce virtuálních strojů Martin Sloup Natalia Rubinova Jiří Kučera.
M. Štulc, J. Šváb, J. Kolena SIMULACE OPERAČNÍHO SYSTÉMU
Příkazový řádek Windows
Programování v C++ Cvičení.
UŽITEČNÉ PROGRAMY – MŮJ PRVNÍ SKRIPT Spustíme více prográmků najednou. SPŠ Teplice - 3.V.
Vzdělávací materiál / DUMVY_32_INOVACE_02B17 Příkazový řádek: procesy AutorIng. Petr Haman Období vytvořeníÚnor 2013 Ročník / věková kategorie3. ročník.
Vzdělávací materiál / DUMVY_32_INOVACE_02B10 Příkazový řádek: úvod AutorIng. Petr Haman Období vytvořeníListopad 2012 Ročník / věková kategorie3. ročník.
Přístupová práva, maska přístupových práv Jiří Hořejší.
Základy práce na PC Ing. Jan Roubíček.
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
PHP – Základy programování
Databázové systémy 2 Cvičení V Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky
Shell Team Jan Kupka Petr Kykal Tomáš Paríšek si Vám dovoluje představit
Operační systém UNIX - vznik v roce 1969, Bell Laboratories (AT&T), Denis Ritchie, Ken Thompson (důraz na souborový systém) - reakce na krachující MULTICS,
Úkol Vytvořit soubor – touch file Zpřístupnit ho ostatním studentům, ale ne mě (uživatel tupost) – lze to? Na čem to závisí? – závisí to na tom, zda jsou.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Signály, jejich význam a použití Jan Kolařík. Co to je Signály fungují jako softwarová přerušení Po přijetí signálu může proces nebo skript provést nějakou.
Správa procesů.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
C - shell C-shell (CS) je interpret uživatelských příkazů využívající pravidla a syntaxi podobná jazyku C. Některé rysy má navíc (historie, alias, …) *řetězec.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost Číslo projektu: CZ.1.07/1.5.00/ Číslo materiálu: VY_32_INOVACE_PSK-4-09.
Dynamické dokumenty na straně serveru Informatika pro ekonomy II přednáška 8.
UNIX — doplňky Informatika pro ekonomy II přednáška 9.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Správce virtuálních strojů Natalia Rubinova Martin Sloup Jiří Kučera.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Stránkový editor vi Makra Pro často používané sekvence příkazů lze použít makra. :map makro sekvence_prikazu :unmap makro Zkratky :ab zkratka plny_tvar.
LINUX - UBUNTU Roman Danel VŠB TU Ostrava, HGF. Informace $ man příkaz $ info příkaz $ apropos subject.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Základy syntaxe jazyka PHP PHP JE TECHNOLOGIE BĚŽÍCÍ NA SERVERU. PHP JE TECHNOLOGIE BĚŽÍCÍ NA SERVERU. Typický PHP skript obsahuje: Typický PHP skript.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Správa procesů.
Práce s řetězci Řetězec je libovolný text nebo libovolná skupina znaků. Řetězec se také označuje jako string. Činnosti prováděné s řetězci: Počítání znaků.
Problémy s češtinou České znaky se standardně nepovažují za alfanumerické znaky (\w) Vadí to při třídění vyhodnocování regulárních výrazů Je třeba použít.
Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –
Operační systém GNU Linux Příkazy pro správu procesů.
Správce virtuálních strojů Natalia Rubinova Martin Sloup Jiří Kučera.
Operační systém GNU Linux
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Úvod do UNIXu (6th round)
Operační systém GNU Linux Příkazy pro práci se soubory.
Úvod do UNIXu (6 th round) David Hoksza
Operační systém UNIX Příkazové prostředí UNIXu: příkaz [argumenty] [jméno] Ve jménech příkazů a parametrech se rozlišují malá a velká písmena.
Úvod do UNIXu (6 th round) David Hoksza
Operační systém GNU Linux
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
1. ročník oboru Mechanik opravář motorových vozidel
Vzorové řešení zápočtového testu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Algoritmizace a programování
Úvod do UNIXu (5th round)
Databázové systémy a SQL
Linux-příkazový řádek
Základní příkazy OS UNIX (1)
Práce s procesy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Autor:
Databázové systémy a SQL
Správa procesů.
chkdsk , systeminfo, subst, shutdown
Transkript prezentace:

Úvod do UNIXu (5th round) David Hoksza david.hoksza@mff.cuni.cz

Program vs. proces program proces kus kódu uložený na záznamovém zařízení proces spuštěný (ne nutně běžící) program kontext procesu paměť (adresový prostor) soubory proměnné stav registrů credentials (UID, GID, …)… identifikace přes PID (Proces ID)

Stavy procesů Process table fork() Zombie Ready Ready User running process state PID PPID UID prioriy signals sent pointer to memory data … Ready Ready swap out swap in exit schedule User running Kernel running return system call, interrupt wakeup wakeup sleep Asleep Asleep Preempted swap out Memory Disk

Uživatelská relace init getty login login: passwd: sh $ ftp ftp> Vytvoří synovský proces Přepíše adresový prostor vytvářecího procesu fork() init getty exec() login login: passwd: Čeká na ukončení exec() fork() sh $ ftp ftp> wait() exit() PID 1 PID 271 PID 312

Seznam procesů ps [options] top výpis procesů -A -l r -C cmd_list všechny procesy (TTY ? jsou neinteraktivní procesy) -l long – podrobný výpis r běžící procesy -C cmd_list seznam procesů s názvem z cmd_listu (seznam oddělený čárkamy) -U uid_list, -u user_list seznam procesů s vlastníky (U – efektivní UID/jméno, u – skutečné UID/jméno) ze seznamu u podrobnosti -p processID vypíše proces s daným ID -t tty seznam procesů běžících na terminálu tty -H stromová struktura top interaktivní seznam procesů se statistikama

Práce s procesy kill [-signal] PID cmd & wait PID bg job_name pošle signal procesu PID defaultně ukončí proces cmd & pustí program v pozadí wait PID čeká na dokončení procesu sort big-data > sorted_data & [1] 3423 wait 3423 bg job_name přesune job job_name (jméno v ps) do pozadí fg job_name přesune proces job job_name do popředí trap cmd signals když shell přijme signál ze signals (odděleno mezerami) provede cmd

Signály kill –l, trap -l … seznam signálů HUP 1 restart programu INT 2 přerušení (CTRL+c) QUIT 3 přerušení (CTRL+\) ABRT 6 volání funkce abort FPE 8 aritmetická chyba KILL 9 ukončení procesu (nemaskovatelné) TERM 15 (maskovatelné) STOP 17 zastavení procesu CONT 19 spuštění procesu CHLD 20 ukončení potomka kill –l, trap -l … seznam signálů

Shell obslužný program pro komunikaci se sytémem interaktivní zpracování zadávání příkazů v terminálu neinteraktivní zpracování dávkový soubor programovací jazyk (proměnné, tok programu, …) a zároveň interpret typ shellu určuje možnosti práce se systémem (historie, speciální klávesy, …) shelly sh – Bourne shell bash – Bourne Again shell (t)csh – C shell ksh – Korn shell

Shell - verze shell (sh) Steve Bourne (1979) test, funkce, … (1980) C shell (csh) Bill Joy (1979) BSD historie aliasy Korn shell (ksh) David Korn (1980-) Tenex C shell (tcsh) Ken Greer (1979) dokončování jmen souborů editace příkazové řádky Bourne-again shell (bash) Brian Fox (1987) GNU Project

Skripty skript je posloupnost příkazů kód skriptu je pušťen v nové instanci shellu provádění skriptu je ekvivalentní zadávání příkazů z klávesnice “online” spouštění sh script_name ./script_name uživatel musí mít r a x práva první řádka skriptu určuje shell, který bude provádět příkazy #!/bin/bash script_name skript musí být umístěn v adresáři z proměnné prostředí PATH

Proměnné case sensitive proměnné prostředí obvykle velkými písmeny, ostatní malými nastavení name=value použití $name, ${name} netypované řetězcové i=3+5; echo $i declare i číselné (pouze celočíselná aritmetika) declare –i i; i=3+5; echo $i i=$((3+5)); echo $i součást prostředí (environment) do procesů potomků se předávají pouze exportované proměnné export variable set výpis exportovaných proměnných

Defaultní proměnné prostředí HOSTNAME jméno aktuálního stroje IFS separátory polí (Input Field Separator) PATH seznam adresářu v kterých hledat příkaz ke spuštění PS1 řetězec promptu (zobrazuje se na začátku řádku při vyčkávání na příkaz) SHELL defaultní shell PPID process ID rodiče PWD aktuální adresář SECONDS počet sekund běhu aktuálního shellu UID User ID aktuálního uživatele

Podmíněná substituce proměnných ${var:-value} použij var a není-li definována použij value ${var:=value} použij var a není-li definována přiřaď do ní hodnotu value ${var:?value} použij var a není-li definována vytiskni value a proveď exit ${var:+value} použij value je-li var definovaná, jinak nedělej nic

Práce s proměnnými ${#var} ${var#pat}, {var##pat} délka proměnné var ${var#pat}, {var##pat} odebrání vzoru pat zleva (## je hladové) ${var%pat}, {var%%pat} zprava ${var/pat/repl} nahrazení prvního vzoru pat řetězcem repl ${var//pat/repl} nahrazení všech vzorů ${var/#pat/repl} vzor se musí vyskytovat na začátku ${var/%pat/repl} vzor se musí vyskytovat na konci mv $filename ${filename}~

Speciální proměnné (1) $# $? $$ $! počet argumentů návratová hodnota posledního příkazu $$ PID aktuálního procesu vhodné pro dočasné soubory $! PID posledního spuštěného procesu prog1 & pid1=$! … wait $pid1

Speciální proměnné (2) $0 $n, ${n} $*, $@ “$*” “$@” shift [N] jméno programu $n, ${n} hodnota n-tého argumentu (pozice větší než 9 se adresují pomocí {}) $*, $@ všechny argumenty ($1 $2 ….) “$*” “$1 $2 ….” “$@” “$1” “$2” …. shift [N] posun vstupních parametrů o N (defaultně 1) echo $*; shift; echo $* set – arg1 arg2 arg3 … znovunastaví vstupní proměnné

Metaznaky znaky se speciálním významem * ? > < | & [ ] $ ( ) ; , atd. rušení speciálního významu \ zrušení významu následujícího znaku “xxx” neruší význam $ ` ” ‘xxx’

Práce s uvozovkami “ “ ‘ ‘ \ př.: každý znak mezi uvozovkami se chápe jako literál až na: $ … provádí se expanze proměnné ` … provádí se příkaz mezi ` ` “ … ukončuje ‘ ‘ každý znak mezi uvozovkami se chápe jako literál až na ’ \ znak za \ je chápán jako literál (použití, aby shell nechápal např. argumenty příkazů jako znaky pro expanzi) př.: echo ‘Single quotes “double quotes”’ echo “Another way how to handle \“double quotes\”” echo “There are `ls | wc –l` files in `pwd`” echo “Value of variable \$var is $var” http://www.csd.uwo.ca/~magi/personal/humour/Computer_Audience/Funny%20UNIX%20Shell%20Commands.html

Formy příkazů cmd & cmd1; cmd2 { cmd1; cmd2; } ( cmd1; cmd2; ) spustí cmd v pozadí cmd1; cmd2 posloupnost příkazů { cmd1; cmd2; } spustí posloupnost jako skupinu v aktuálním shellu ( cmd1; cmd2; ) spustí posloupnost jako skupinu v subshellu cmd1 `cmd2`, cmd1 $(cmd2) spustí cmd1 s výstupem cmd2 jako argumentem cmd1 && cmd2 AND … spustí cmd2 pouze za podmínky, že se cmd1 podaří (vrátí 0) cmd1 || cmd2 OR … zpustí cmd2, když cmd1 neprojde ! cmd vrátí 0 když cmd vrátí nenulu a naopak (obrací význam návratové hodnoty)

Úkol Vytvořte skript, který najde všechny céčkovské zdrojáky v aktuálním adresáři a jejich název uloží do proměnné definované jako argument skriptu. Spusťte najednou výpis dvou souborů (pomocí 2 příkazů cat) a výstup obou zapište do jednoho výstupního souboru. Napište skript, který pro zadaného uživatele vypíše počet jeho procesů.