UNIX – z pohledu uživatele
1
Operační systém UNIX Nejzákladnější komponenty: ! jádro (kernel) ! shell ! utility Jádro operačního systému ! v podstatě představuje vlastní operační systém ! fyzicky je to jediný soubor, který je umístěn v kořenovém adresáři ! při inicializaci je zavedeno do paměti, zůstává zde celou dobu práce počítače (do jeho shození) ! komunikuje s hardwarem (fyzickými zařízeními systému) ! komunikuje se systémovým shellem Hlavní úkoly jádra: 1. přiděluje programům paměť (správa paměti) 2. rozděluje čas zpracování CPU a přiděluje jej jednotlivým programům (správa procesů) 3. obsluhuje všechny požadavky na vstup a výstup Procesy využívají jádra pomocí volání jádra (System Calls)
UNIX – z pohledu uživatele
2
uživatel jádro technické vybavení jádro uživatel Programy – procesy – démoni Programy jsou uloženy jako soubory. (systém souborů) Proces je program, který se začal provádět. (dynamická běžící instance programu) V jednom okamžiku může běžet více kopií programu jako procesy ⇒ nutnost procesy očíslovat ⇒ pokaždé, když Unix spustí program, dá mu jedinečné identifikační číslo – identifikace procesu (PID).
UNIX – z pohledu uživatele
3
Démon je proces, který se provádí na pozadí. (např. existuje poštovní démon, který stále hledá zprávy, které se mají doručit) Většina démonů jsou programy, které se spouštějí při inicializaci systému. Jsou to procesy jádra, jsou stále aktivní a aktivují jiné procesy, které jsou zapotřebí.
SHELL ! interpret příkazů – zajišťuje komunikaci počítače s uživatelem ! umožňuje zadávat uživateli na vstupu příkazy ve vyšších jazycích a určuje, co se bude provádět ! je zodpovědný za substituci příkazů a expanzi expanzních znaků (wildcards) ! jednoduché (vnitřní) příkazy zpracovává sám ! další příkazy posílá ke zpracování jinému shellu nebo jádru Realizace interního příkazu: požadavek uživatel
shell odpověď
UNIX – z pohledu uživatele
4
Další způsoby realizace uživatelských požadavků shellem pož.
uživatel
pož.
shell
subshell
odp.
odp.
pož.
uživatel
pož.
shell odp.
jádro odp.
Shelly: ! Bourne shell ! C Shell ! Korn Shell
UTILITY ! říká se jim také příkazy či programy ! jsou to spustitelné soubory, jsou uloženy v adresářích: /bin a /usr/bin ! v současnosti obsahuje Unix asi 300 utilit a interních příkazů ! liší se jednotlivé verze Unixu, všechny však obsahují standardní množinu programů
UNIX – z pohledu uživatele
Služby shellu (komponenty shellu): 1. Interpretace příkazů a provádění příkazů 2. Programovací jazyk 3. Substituce proměnných 4. Přesměrování vstupů a výstupů 5. Uživatelské prostředí 6. Substituce jmen souborů 7. Roury
Interpretace a provádění příkazů ! Shell předpokládá, že příkazový řádek má tento formát: jméno_programu přepínače další argumenty ! rozhoduje, zda zapsaný příkaz je interním nebo jiným příkazem ! kontroluje správnost přepínačů a dalších argumentů ! zajistí spuštění příkazu
Programovací jazyk ! jazyk vestavěný do shellu ! využívá všech příkazů, které je možno zapsat do příkazové řádky
5
UNIX – z pohledu uživatele
Přesměrování vstupu a výstupu ! využívají se metaznaky: < , > , << , >> ! umožňuje uživateli zvolit, odkud přichází vstup do příkazu a kam směřuje výstup příkazu
Uživatelské prostředí ! domácí adresář uživatele ! login shell uživatele ! seznam adresářů, které se prohledávají při požadavku spuštění programu ! další proměnné prostředí, které mohou být nastaveny i uživatelem
Substituce proměnných ! umožňuje přiřadit proměnným hodnoty, na které je možno se později odkazovat
Substituce jmen souborů ! umožňuje uživateli vyjádřit velmi krátce seznam jmen souborů, na které se odkazuje pomocí zápisu masky jména souborů ! maska může obsahovat běžné alfanumerické znaky a expanzní znaky ! expanzní znaky: * , ? , [ , ]
6
UNIX – z pohledu uživatele
Roury ! umožňují přesměrování výstupu jednoho příkazu na vstup jiného příkazu ! znakem pro označení je ¦ (svislítko) (ALT + W (179)) ! nevytvářejí se dočasné soubory, které bychom museli smazat, jsou však spuštěny dva procesy (každý z jedné strany svislítka)
Komunikace s shellem: ! zahájení práce u počítače – vytvoření tzv. session (spojení) pomocí přihlášení uživatele ! zadání uživatelského jména a hesla ! po správném zadání shell provede přihlašovací proceduru a spustí uživatelův login shell ! zadávání příkazů z příkazové řádky, oddělovače: klávesa ENTER nebo znak ; (středník) ! prompt - zobrazení (možnosti změn) ! informace o chybách – tzv. obsluha chyb
Vlastnosti shellu Expanzní znaky (metaznaky, regulární výrazy): • Hvězdička (*) zastupuje nula nebo více výskytů libovolných znaků
7
UNIX – z pohledu uživatele
8
Příklady: zastupuje všechna jména souborů A* začínající na A zastupuje všechna jména souborů mající *x* ve jménu znak x zastupuje všechna jména souborů která *abc končí na abc • Otazník (?) zastupuje právě jeden znak Příklady: všechny soubory mající jméno které gold? začíná na gold a za ním ještě jeden znak ls data?* vypíše všechny soubory, začínají na data a ještě následuje alespoň jeden znak všechny soubory mající název právě ? jeden znak • Hranaté závorky ( [ ] ) - je to tzv. seznam znaků, v řetězci se vyskytuje právě jeden znak z těch, které jsou uvedeny v závorkách • Vykřičník (!) - shoda s kterýmkoliv znakem, kromě znaku uvedeného v závorce • Znaménko mínus (-) - lze použít k zadání rozsahu písmen nebo číslic
UNIX – z pohledu uživatele
Příklady: [abc] [0-9] [a-zA-Z0-9] [!a] ls [xy]*
9
jeden ze znaků a,b,c jedna z číslic libovolný alfanumerický znak libovolný znak kromě znaku a
Uvozovky: v Unixu je možno využít různých typů uvozovek: • běžné uvozovky (“text”): používají se pro seskupení znaků, tvoří jediný argument příkazu • jednoduché uvozovky (‚text‘) : znaky uvedené v řetězci se neinterpretují • obrácené apostrofy (`text`) : umožňují provedení textu uvedeného v obrácených apostrofech jako příkazu a nahrazení celého řetězce standardním výstupem tohoto příkazu (využívá se pro substituci příkazů)
Proměnné a uživatelské prostředí:
• využívají se pro dočasné uchování informací • mohou mít libovolnou délku • mohou obsahovat malá i velká písmena, čísla, speciální znaky
UNIX – z pohledu uživatele
• nesmí začínat číslem, obsahovat metaznaky shellu • není třeba je deklarovat • všechny jsou jediného datového typu – typu řetězec Přiřazení hodnoty proměnné: read jméno_proměnné interní příkaz read umožní načtení hodnoty proměnné ze svého vstupu jméno_proměnné=hodnota přiřazovacím operátorem (=) se přiřadí proměnné zadaná hodnota jméno_proměnné=`příkaz` proměnné se přiřadí hodnota výstupu nějakého příkazu Přístup k hodnotě proměnné: echo $jméno_proměnné
10
UNIX – z pohledu uživatele
11
Rozdělení shellovských proměnných: Podle způsobu definice a možnosti změn: 1.Uživatelské proměnné • jsou definovány koncovým uživatelem 2.Systémové proměnné a)enviroment proměnné v širším slova smyslu • jsou definovány při přihlášení uživatele do systému • mohou se měnit jejich hodnoty • lze je použít jak v příkazové řádce, tak v shellovském skriptu b)speciální shellovské proměnné využívají se v shellovských skriptech a popisují vlastnosti spuštěného shellovského skriptu Podle oboru platnosti: 1.ennvironment proměnné v širším slova smyslu • jsou to proměnné prostředí, jsou „viditelné“ ve všech programech 2.lokální proměnné • je jí každá uživatelská proměnná • možno ji exportovat do prostředí (příkaz export)