Unix-alapok

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(Ajánlott irodalom: Ajánlott irodalom linkesítve)
(Bővítve több irodalommal, processzek állapotaival)
76. sor: 76. sor:
 
** WINCH (Window changed)
 
** WINCH (Window changed)
 
*** Megváltozott a terminál mérete
 
*** Megváltozott a terminál mérete
  +
  +
== Processzek állapotai ==
  +
Pl. a ps(1) outputjában látszanak:
  +
<pre>
  +
% 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
  +
[...]
  +
</pre>
  +
  +
* 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
   
 
== Ajánlott irodalom ==
 
== Ajánlott irodalom ==
91. sor: 116. sor:
 
A processzek lehetséges állapotairól:
 
A processzek lehetséges állapotairól:
 
* [http://www.mcsr.olemiss.edu/cgi-bin/man-cgi?ps man ps]
 
* [http://www.mcsr.olemiss.edu/cgi-bin/man-cgi?ps man ps]
  +
  +
A process groupokról:
  +
* [http://en.wikipedia.org/wiki/Process_group http://en.wikipedia.org/wiki/Process_group]
  +
* [http://www.ci.fct.unl.pt/arquivo/manuais/gnuC/library_24.html Job Control] (Ez kicsit részletesebb.)

A lap 2006. szeptember 14., 21:44-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)
  • 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

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:

Ezek megbízhatóbbak, de csak a signalokról van szó bennük:

A processzek lehetséges állapotairól:

A process groupokról:

Személyes eszközök