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
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
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
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
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ů
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
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ů
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
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
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
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
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í.
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