3. Procesy
Procesem se v Unixu rozumi
provadeny program vcetne dat (image).
Kazdy proces je z hlediska
uzivatele jednoznacne identifikovan
svym identifikacnim cislem
PID (process identifier). Specialni
systemove procesy, ktere
nenalezeji zadnemu uzivateli a resi
ruzne systemove problemy
(napr. sdileni prostredku systemu) se
v Unixu nazyvaji demoni (daemons).
3.1 Procesy a soubory
Proces od sveho rodicovskeho
procesu (napr. shellu) zdedi radu
vlastnosti, mj. argumenty
a tzv. prostredi procesu a vsechny
soubory otevrene rodicovskym
procesem. Dedenim od zakladniho
procesu terminalu ziska kazdy
proces tri zakladni soubory.
Tyto tri zakladni soubory
jsou otevreny jako standardni vstup,
standardni a chybovy vystup
(obvykle pro terminal uzivatele).
Pro tyto tri zakladni soubory
jsou pouzity deskriptory 0, 1 a 2.
Pri interpretaci shell rozdeli
prikaz na jmeno prikazu a jeho
argumenty. Dale hleda soubor
se jmenem prikazu. Ten se hleda
v adresarich, ktere obsahuje
promenna shellu PATH. Je-li
nalezeny soubor proveditelny,
je vytvoren novy proces.
Z prikazu jsou dale pri zavadeni
programu interpretovany
argumenty, ktere umoznuji
uzivateli presmerovat standardni
soubory:
<file presmerovani standardniho
vstupu do file
>file presmerovani standardniho
vystupu do file
>>file presmerovani standardniho
vystupu
pripojujici vystup na konec
souboru file
<<'slovo' here document
(data nasleduji bezprostredne
v souboru); prenos znakove
bez nahrady
slovo je omezovac urcujici
konec dat
<<\slovo here document
<<slovo here document;
provadi se nahrada $,`...`,\
specialne pro Bourne shell:
n>file presmerovani vystupu
s deskriptorem n
do file (2 chybovy vystup)
n>>file presmerovani vystupu
s deskriptorem n
pripojujici vystup na konec
souboru file
n>&m spojeni vystupu
s dekriptory n a m
n<&m spojeni vstupu
s dekriptory n a m
<&- uzavreni standardniho
vstupu
>&- uzavreni standardniho
vystupu
specialne pro C-shell:
>&, >>& presmerovani
chyboveho vystupu a pripojeni
k standardnimu vystupu (spojeni
deskriptoru)
Tyto argumenty prikazu pak
nejsou jiz predany procesu. Oblibenym
typem programu v Unixu je
program, ktery cte data ze standardniho
vstupu a po zpracovani je
predava na standardni vystup. Tento typ
programu je oznacovan jako
filtr.
Prednost filtru se objevi
ve spojeni s dalsim mechanismem Unixu,
kterym je odstraneni pomocnych
souboru. Tento mechanismus se
nazyva roura (pipe) a jde
o systemovou vyrovnavaci pamet, do
ktere jeden proces data uklada
a dalsi je z ni odebira.
Pro oznaceni tohoto mechanismu
se pouziva oddelovace "|":
command1 | filtr
kde prikaz "command1" zapisuje
svuj vystup do roury, ze ktere jsou
ctena prikazem "filtr", ktery
pak vysledky vypisuje na standardni
vystup. Prikazy spojene rourou
se nazyvaji kolona. Kolona muze
obsahovat nekolik clenu,
ktere si predavaji sve vysledky.
Specialne pro C-shell lze
presmerovat do roury i chybovy vystup
pomoci znaku oddelovace "|&".
3.2 Zakladni prikazy pro
praci s procesy
Na prikazovem radku je mozno
zadat provedeni vice prikazu. Jednou
z moznosti bylo vyse uvedene
spojeni prikazu do kolony. Dale je
mozno zadat podobnym zpusobem
sekvencni zpracovani prikazu pomoci
oddelovace ";". Pri tomto
zpusobu spousteni procesu se vzdy ceka
na dokonceni jednotlivych
procesu nebo cele kolony (procesy v ni
bezi paralelne). UNIX poskytuje
uzivateli moznost spusteni noveho
procesu, pri kterem rodicovsky
proces (shell) neceka na jeho
dokonceni a oba procesy pokracuji
nezavisle na sobe. Pro oznaceni
tohoto mechanismu se pouziva
znak "&". Je-li tento znak uveden
na konci prikazoveho radku,
potom se vypisi identifikacni cisla
spustenych procesu a ihned
se vypise vyzva shellu. Pro urceni
poradi interpretace prikazu
na radce lze pouzit zavorek "(" a ")".
Takto ohranicena skupina
prikazu je provedena novou kopii shellu.
Prikazy pro praci s procesy:
sleep [n] pozdrzeni vykonani
procesu o n sekund
wait cekani na dokonceni
vsech procesu
kill PID predcasne ukonceni
procesu s cislem PID
ps [-ag] vypis informaci
o bezicich procesech
(soucasti je i PID procesu)
a vsechny procesy vsech uzivatelu
g vsechny procesy
nice command provedeni prikazu
command se snizenou prioritou
nohup command provedeni prikazu
command, ktery nelze
ukoncit z prerusenim z klavesnice
nebo
ukoncenim shellu
at time command provedeni
prikazu command v zadanem case
time command mereni doby
provedeni procesu command
3.3 Shell a zakladni systemove
prikazy
Interpret uzivatelskych prikazu
(shell) je jednim ze zakladnich
systemovych programu. Nachazi
se obvykle v souboru "/bin/sh"
(Bourne shell) a "/bin/csh
(C-shell) a muze byt vyvolavan
rekurzivne. Prikazy cte ze
standardniho vstupu. Tohoto lze
vyuzit k provedeni sady prikazu
ulozenych v textovem souboru
(tzv. scenari - scriptu).
Pokud ma scenar nastaven priznak
proveditelnosti, potom neni
treba spoustet shell (to zaridi
automaticky system). Shell
lze z pohledu uzivatele-programatora
povazovat za velmi vykonny
programovaci jazyk, ktery umoznuje
pomoci standardnich konstrukci
a prikazu vykonat neobvykle slozite akce.
Zakladni systemove prikazy:
sh [flags] file [args]
spusteni Bourne shellu s
argumenty args
csh args spusteni C-shellu
s argumenty args
who [am I] informace o prihlasenych
uzivatelich
am I pouze o aktualnim uzivateli
date informace o aktualnim
datumu a case
passwd zmena uzivatelskeho
hesla
echo [-n] args opis argumentu
na standardniho vystupu
n bez znaku konec radku
man str vypis informace (napovedy)
o str
man -k keyword vypis souhrnu
jednoradkovych informaci
podle klice keyword
tee file T-odbocka z roury
do souboru (filtr)
write user [tty] prikaz pro
rozhovor s uzivatelem user
na terminalu tty
(! cmd prikaz pro shell)
mail elektronicka posta
|