Unix-alapok
A Unix/Linux szerverek üzemeltetése wikiből
		(Változatok közti eltérés)
		
		
 (→Potenciális zh-kérdések)  | 
			Aron  (vitalap | szerkesztései)  a (→némi kötözködés)  | 
			||
| 141. sor: | 141. sor: | ||
* A processzek szempontjából mit jelent az, hogy egy felhasználó tagja egy csoportnak?  | 
  * A processzek szempontjából mit jelent az, hogy egy felhasználó tagja egy csoportnak?  | 
||
**Szigorúan véve nem a felhasználóknak, hanem a futó folyamatoknak vannak csoporttagságaik, ezért a változtatások csak az újonnan induló processzekre lesznek érvényesek, ha a felhasználót hozzáadjuk egy újabb csoporthoz.  | 
  **Szigorúan véve nem a felhasználóknak, hanem a futó folyamatoknak vannak csoporttagságaik, ezért a változtatások csak az újonnan induló processzekre lesznek érvényesek, ha a felhasználót hozzáadjuk egy újabb csoporthoz.  | 
||
| + | ** Még szigorúbban véve az adott buroktól öröklik a jogokat az újonnan induló folyamatok is, ezért aztán újra be kell lépni. Vagy legalábbis újra beolvastatni a burokkal a csoporttagságokat.  | 
||
A lap 2006. november 13., 22:25-kori változata
A Unix:
- Többfelhasználós (multiuser)
 - Többfeladatos (multitaszking)
 - Hálózati (network)
 
operációs rendszer (operating system). De ezt úgyis tudtuk.
Egy csomó minden mást is tudunk, úgyhogy koncentráljunk inkább olyasmire, amit talán nem, vagy nem annyira pontosan.
Tartalomjegyzék | 
1 Processz állapottere
- UID
 - GID
 - supplementary group memberships
 - effektív UID (pl. setuid bit miatt lehet más)
 - effektiv GID (pl. setgid bit miatt lehet más)
 - current working directory
 - filedeszkriptorok
 - környezeti változók
 -  PGID
- kill -SIGNAL -PGID az egész process groupnak elküldi a signalt
 
 - scheduler
 - niceness
 - resource limits
 - root directory (chroot esetén változhat)
 - umask
 - stb.
 
2 Signalok
- Aszinkron jelzések processzek között
 - Lehet hozzájuk handlereket regisztrálni
 - Az érdektelenek kimaszkolhatók (kivéve KILL)
 - Kézbesítésük nem feltétlenül azonnali (pl. D állapotú processz nem kapja meg, l. később)
 -  Signal küldése
- kill paranccsal
 - kill() rendszerhívással
 - sigqueue() rendszerhívással (ekkor adat is küldhető mellé)
 - Hány signal állhat sorba? 1? Több? Házi feladat :)
 
 -  Néhány gyakori signal:
-  HUP (HangUp)
- Ha eltűnik a terminál (pl. a user bezárja az ablakot)
 - Daemonoknál gyakran: olvasd újra a configot
 
 -  INT (Interrupt)
- CTRL-C
 
 -  QUIT 
- CTRL-\
 
 -  ILL (Illegal instruction)
- CPU-kivétel
 - súlyos program- vagy hardverhibára utal
 
 -  KILL
- Kilépteti a processzt, nem maszkolható
 
 -  USR1
- Nincs előre definiált jelentése, szabadon felhasználható
 
 -  SEGV (Segmentation Violation)
- "A program érvénytelen műveletet hajtott végre"
 -  Tipikus okok:
- Pointer rossz helyre mutat (pl. túlcímeztünk egy tömböt)
 - Valamit kértünk, nem sikerült, mégis használjuk (pl. nemlétező file-t próbáltunk megnyitni, és annak ellenére, hogy az open() hibát adott vissza, az érvénytelen filedescriptorból olvasni próbálunk)
 
 - Vagyis: programhiba
 - Lehet hardverhiba is
 
 -  USR2
- l. mint fent
 
 -  PIPE ("broken pipe")
- A pipe-unkat olvasó processz kilépett
 
 -  ALRM (Alarm)
- Időzítő lejárt
 
 -  TERM (Terminate)
- Default "lépj ki" signal
 
 -  CHLD (Child exited)
- Véget ért egy gyermekfolyamatunk
 
 -  CONT (Continue)
- Folytatódhat a végrehajtás STOP vagy TSTP után
 
 -  STOP
- Felfüggesztés
 
 -  TSTP (Terminal stop)
- Felfüggesztés CTRL-Z hatására
 
 -  XCPU (CPU time exceeded)
- Lejárt a megengedett CPU-idő
 
 -  WINCH (Window changed)
- Megváltozott a terminál mérete
 
 
 -  HUP (HangUp)
 
3 Processzek állapotai
Pl. a ps(1) outputjában látszanak:
% ps axu USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND [...] korn 1842 0.0 0.1 4932 2592 ? Ds Sep07 0:23 SCREEN -D korn 17670 0.0 0.0 4896 948 pts/0 R+ 20:55 0:00 ps axu [...]
- D: I/O-ra vár (itt alighanem épp a read() vagy a write() rendszerhívásban)
 - R: fut vagy futásra kész
 - S: vár (ilyenkor kaphat signalt)
 - T: fel van függesztve
 - Z: "zombie" - véget ért, de a szülője még nem olvasta ki a visszatérési értékét a wait() vagy a waitpid() rendszerhívással
 
Egyéb flagek:
- <: negatív nice (több processzoridőt kap)
 - N: pozitív nice (kevesebb processzoridőt kap)
 - s: session leader (igazából nincs jelentősége)
 - l: többszálú
 - +: előtérben van
 
4 Ajánlott irodalom
Ezeket részben hallgatók írták egy másik tárgy óráin elhangzottak alapján, úgyhogy lehetnek bennük tévedések:
- 2004. őszi "alapozólabor" első gyakorlatának óravázlata
 - 2005. tavaszi "alapozólabor" első gyakorlatának óravázlata
 - 2005. őszi "alapozólabor" első gyakorlatának óravázlata
 - 2006. tavaszi "alapozólabor" első gyakorlatának óravázlata
 
Ezek megbízhatóbbak, de csak a signalokról van szó bennük:
- man 7 signal (különösen a realtime signalokról szóló rész tanulságos)
 - man 2 kill (magyarul)
 - man 1 kill (magyarul)
 
A processzek lehetséges állapotairól:
A process groupokról:
- http://en.wikipedia.org/wiki/Process_group
 - Job Control (Ez kicsit részletesebb.)
 
5 Potenciális zh-kérdések
-  Soroljon fel legalább tíz olyan állapotváltozót (az állapottér elemét), amelyet egy unixos gyermekfolyamat örököl a szülőjétől!
- current working directory
 - UID
 - GID
 - effektív UID (pl. setuid bit miatt lehet más)
 - effektiv GID (pl. setgid bit miatt lehet más)
 - PGID
 - filedeszkriptorok
 - környezeti változók
 - umask
 - root directory (chroot esetén változhat)
 
 -  Mi a process group?
- Több processz összerendelése egy csoportba. Hasznos, ha futás közben forkol a processz. Nem szükséges figyelni, hogy indult-e újabb, mert a PGID segítségével a csoport összes folyamata megkapja a nekik szánt signal-t.
 
 -  Mi a supplementary group?
- A felhasználó több csoportnak is a tagja, a /etc/group-ban több grouphoz is be van jegyezve.
 
 -  A processzek szempontjából mit jelent az, hogy egy felhasználó tagja egy csoportnak?
- Szigorúan véve nem a felhasználóknak, hanem a futó folyamatoknak vannak csoporttagságaik, ezért a változtatások csak az újonnan induló processzekre lesznek érvényesek, ha a felhasználót hozzáadjuk egy újabb csoporthoz.
 - Még szigorúbban véve az adott buroktól öröklik a jogokat az újonnan induló folyamatok is, ezért aztán újra be kell lépni. Vagy legalábbis újra beolvastatni a burokkal a csoporttagságokat.