Tux

o.s.Linux - teoretické kapitoly

o.s.Linux

jádro o.s. .../boot/vmlinuz-x.y.z (asi 2MB komprimovaný soubor)

distribuce ... programový balík postavený nad jádrem - navzájem je odlišuje:
zaměření (server, pracovní stanice, stav nouze, live)
sestava programů
instalační procedura a konfigurace
četnost vydávání nových verzí a způsob aktualizace

(fh) stručná historie UNIXu, LINUXu a GNU

charakteristika o.s.Linux

licence GNU GPL (svobodný software)

multiuživatelský o.s

filosofie programování (KISS - Keep It Small and Simple)

textový formát dat (konfigurace, logy, i/o)

výkonný shell umožňující tvorbu scriptů

grafický X window system není součástí jádra o.s.

programovací jazyk C

dostupná a obsáhlá dokumentace

(fh) charakteristika a filosofie o.s.Unix,Linux

základní vlastnosti souborového systému

jeden adresářový strom, jednotlivé větve se připojují příkazem mount

pevná struktura adresářů  (/bin /etc /usr /var ...) viz. Filesystem Hierarchy Standard

nativní souborové systémy (tj. může na něm být Linux nainstalovaný): minix, ext2fs, ext3fs, Reiserfs, JFS, XFS

podporované souborové systémy: msdos, vfat, ntfs, iso9660, ncpfs, nfs, ...

typy souborů: obyčejný, adresář, symlink, blokové zařízení, znakové zařízení, pojmenovaná roura, soket

cesta - relativní (např. ../bin/program), absolutní (např./etc/sysconfig/iptables)

(ext2) jméno souboru: max.255 znaků (libovolných kromě '/'a'\0'), rozlišuje velikost znaků, jméno skrytého souboru začíná tečkou

(ext2) inode ... datová struktura obsahující vlastnosti souboru
(typ, přístupová práva, počet linků, uid, gid, velikost, mtime,atime,ctime,dtime, 13 ukazatelů na datové bloky)

(ext2) rezervuje 5% místa pro roota

(ext2) rozšiřitelný (viz. atributy, ACL, undelete, 1012 znaků pro jméno)

(ext3) navíc žurnál (journal) ... možnost obnovy dat po pádu systému

vnitřní struktura ext2fs

boot blok ... 1.datový blok na disku - prázdný nebo obsahuje část zaváděcího kódu

superblok ... pro souborový systém je ŽIVOTNĚ DŮLEŽITÝ, obsahuje:
info o geometrii disku,
popis souborového systému (typ, velikost, stav, počet mountů),
bitmapu inodů,
bitmapu datových bloků

tabulka inodů

datové bloky

zabezpečení souborového systému

základní přístupová práva: nastavují se zvlášť pro vlastníka, vlastnickou skupinu a ostatní
r... read - právo číst obsah souboru nebo adresáře
w... write - právo zapisovat do souboru, v adresáři vytvořit/smazat soubor/podadresář
x... execute - spustit soubor, vstoupit do adresáře

zbývající přístupová práva:
suid bit... proces poběží s přístupovými právy vlastníka souboru (programu)
sgid bit... proces poběží s přístupovými právy vlastnické skupiny programu
sticky bit... v adresáři může mazat soubory/podadresáře pouze jejich vlastník

ACL (access contol list) - vlastnost souboru, která rozšiřuje možnosti přidělit práva dalším uživatelům nebo skupinám. Musí se pro daný souborový systém povolit.

atributy - jsou další vlastnosti souboru

diskové kvóty - omezují uživatelům diskový prostor a počet souborů

shell

rozhraní uživatel - operační systém

textový shell = interpret příkazového řádku
interaktivní shell čte příkazy z terminálu, neinteraktivní z příkazového souboru (scriptu)

v Linuxu se používá GNU Bourne Advanced SHell/bin/bash

login shell ... automaticky interpretuje login/logout scripty:
/etc/profile
~/.bash_profile (vhodný pro nastavení uživatelských proměnných)
~/.bash_logout

jiný interaktivní shell ... ~/.bashrc(pro uživatelské aliasy a funkce)

neinteraktivní shell ... systémové proměnnéBASH_ENVneboENV

význam některých proměnných shellu

PATH   ... seznam adresářů, ve kterých shell hledá programy

PS1    ... prompt příkazového řádku

PS2    ... sekundární prompt (tj. prompt pokračovacího řádku)

UID    ... uid aktuálního uživatele

SHLVL  ... úroveň vnoření shellu

RANDOM ... obsahuje při každém čtení náhodné celé číslo

SECONDS... čítač počtu vteřin běhu aktuálního shellu

TMOUT  ... odpočítává vteřiny do ukončení aktuálního shellu

HISTSIZE HISTFILESIZE HISTCONTROL... nastavení parametrů historie příkazů

příkazový řádek

gramatika shellu: syntaktická pravidla, rezervovaná slova, řídící znaky

odebrání řídícího významu znaku (na příkladu výpisu souboru s mezerou ve jménu):
cat muj\ soubor
cat 'muj soubor'
cat "muj soubor" (mezi uvozovkami si některé znaky řídící význam ponechávají - např.$)

jednoduchý příkaz: [cesta/]prg -přepínače arg1 arg2 arg3 ...

strukturované příkazy: if, case, for, select, while, until(probereme později)

kombinace příkazů:
prg1; prg2; prg3; ... programy se spouští postupně
prg1 | prg2 | prg3 | ... programy se spustí současně a předávají si data
prg1 && prg2 prg2 se spustí, pokud prg1 skončil bez chyby (NK1=0)
prg1 || prg2 prg2 se spustí, pokud prg1 skončil s chybou (NK1!=0)

Postup zpracování příkazového řádku:
1. náhrada aliasu
2. substituce/expanze shellu
3. spuštění systémové funkce
4. nebo spuštění vnitřního příkazu
5. nebo spuštění externího programu

aliasy: alias, unalias
jsou platné jen v interaktivním shellu (tj. nemají význam ve scriptu)
nedědí se do dalšího shellu - je dobré je definovat v ~/.bashrc
lze potlačit náhradu aliasu: \prgnebo'prg'nebo"prg"nebocommand prg

systémové funkce: set, typeset -f, declare -f
lze je vytvořit nebo zavolat i ve scriptu
nedědí se do dalšího shellu (~/.bashrc)
potlačení spuštění funkce: command prg

vnitřní příkazy shellu: enable
nápověda: help příkazneboman bash

externí program:   textový soubor shell chápe jako script

Substituce/expanze shellu

provádí je shell =>
- program to neřeší, může být jednodušší
- pro všechny programy je nahrazování stejné
- program musí umět zpracovat více argumentů

Expanze jmen (souborů) tzv. "žolíkové znaky"
* nahradí jakýkoliv řetězec (i prázdný)
? nahradí 1! znak
[znaky] nahradí 1 znak z množiny
{ř1,ř2,ř3,...} nahradí 1 řetězec z výčtu

Substituce parametrů${parametr}nebo zjednodušeně$parametr
poziční parametry: ${0} ${1} ${2}atd.
systémové proměnné: ${proměnná}
zvláštní parametry: ${#} ${*} ${@} ${?} ${$} ${!}

Substituce aritmetická$((výraz))nebo postaru$[výraz]
64 bitová celočíselná aritmetika se znaménkem
čísla 123 0123 0x123 4#123, proměnné, operátory ++ -- + - * / % **

Substituce výstupem příkazu$(příkaz)nebo postaru`příkaz`
označený příkaz se provede a jeho výstup se dosadí na příkazový řádek

Správa procesů - základní pojmy

program, proces (=instance programu)

typ procesu:
uživatelský (vytváří uživatel; má řídící terminál, tj. má kam zapisovat)
démon (vytváří systém; nemá řídící terminál - zapisuje obvykle do log souboru)
proces jádra

některé charakteristiky procesu:
kód (sdílená ro paměť), data (soukromá rw paměť)
PID, PPID (=>strom procesů, kořen=init, PID=1)
RUID, EUID
stav (R,S,T,Z = Running, Sleeping, Terminated, Zombie)
otevřené soubory (automaticky - stdin, stdout, stderr - napojené na terminál, lze přesměrovat)
reakce na signály (implicitní, obslužná procedura, ignorování)

běh na popředí:
shell čeká na ukončení
lze řídit z terminálu (např. Ctrl-C)
po skončení vrací shellu návratový kód (NK)

některé signály
1=SIGHUP, 2=SIGINT (ctrl-c), 3=SIGQUIT (ctrl-\), 9=SIGKILL, 15=SIGTERM, 18=SIGCONT, 19=SIGSTOP (ctrl-z)

přesměrování souborů stdin,stdout,stderr

Plánování procesů

Pravidelné spouštění

/usr/sbin/crond... démon, který spouští naplánované úlohy

/etc/crontab... systémová cron-tabulka

/var/spool/cron/... adresář s uživatelskými cron-tabulkami

/etc/cron.allow , /etc/cron.deny... soubory povolující/zakazující využívat službu crond

/usr/sbin/anacron... kontroluje, zda byla úloha spuštěna v posledních n dnech (pro stanice, které neběží trvale a např. úlohy naplánované na noc se neprovedou

/etc/anacrontab... tabulka úloh

Jednorázové spuštění

/usr/sbin/atd... démon, který spouští naplánované úlohy

/var/spool/at/... adresář s frontami úloh

/etc/at.allow , /etc/at.deny... soubory povolující/zakazující využívat službu atd

Programování v shellu

Shell umí interpretovat scripty - textové příkazové soubory. Script se často používá v situacích, které se opakují a je výhodné je zautomatizovat - např. boot systému, přihlášení uživatele apod. Hlavní výhodou scriptu je jeho čitelnost a snadná úprava. Nevýhodou je pomalé zpracování.

Script lze spustit stejně, jako binární program. Soubor by měl být umístěn v adresáři uvedeném v proměnnéPATH, uživatel musí mít právox a script je interpretován v nové kopii shellu, aby interpretované příkazy nepoškodily uživatelovo prostředí.

Práce s textem

Textový formát má v Linuxu velký význam, používá se zejména v situacích:
konfigurační soubory - viz. adresář /etc
soubory systémových zpráv - tzv.logy - viz. adresář/var/log
vstupní a výstupní formát dat - umožňuje to procesům přenos dat: cat soubor | grep "Jan" | sort
příkazové soubory - scripty