ProzesseProzesse können einen von drei Zuständen haben:
Ein Prozess kann weitere Prozesse starten *1. Gestartete Prozesse geben beim Beenden einen Ergebnis-Code (errorlevel) an den aufrufenden Prozesse zurück. Als Zombie Prozesse bezeichnet man beendete Prozesse, die jedoch noch einen Prozess-Tabellen-Eintrag belegen.
Z.B.: Der einen weiteren Prozess (=Kind) aufrufende (Eltern-)Prozess ist nicht mehr vorhanden oder nimmt den Abschlusswert nicht an. Der Kindprozess hat sich beendet, den von ihm belegten Speicherplatz freigegeben und wartet darauf den Abschlusswert zurückzugegeben. Solange sich der Prozess in diesem Wartezustand befindet, belegt er in der Prozesstabelle einen Eintrag.
Die Kenndaten können sehr schön mittels
cat /proc/[prozessnr]/status
ausgegeben werden*2:
Name: ypbind
State: S (sleeping)
Tgid: 726
Pid: 726
PPid: 724
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmSize: 17884 kB
VmLck: 0 kB
VmRSS: 736 kB
VmData: 16476 kB
VmStk: 12 kB
VmExe: 28 kB
VmLib: 1304 kB
SigPnd: 0000000000000000
SigBlk: 0000000080014407
SigIgn: 8000000000000000
SigCgt: 0000000380014407
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
Ausgabe des Befehls top:
| 3:20pm up 6:48, 8 users, load average: 0.07, 0.19, 0.22 |
| 141 processes: 138 sleeping, 2 running, 1 zombie, 0 stopped |
| CPU states: 5.6% user, 5.6% system, 0.0% nice, 88.7% idle |
| Mem: 247668K av, 243600K used, 4068K free, 0K shrd, 26052K buff |
| Swap: 385520K av, 12812K used, 372708K free 83500K cached |
| PID | USER | PRI | NI | SIZE | RSS | SHARE | STAT | %CPU | %MEM | TIME | COMMAND |
| 6537 | rk | 16 | 0 | 1016 | 1016 | 764 | R | 2.1 | 0.4 | 0:00 | top |
| 3446 | root | 15 | 0 | 29456 | 20M | 4392 | S | 1.9 | 8.5 | 6:23 | X |
| 3536 | rk | 15 | 0 | 10928 | 10M | 9848 | S | 1.9 | 4.4 | 4:01 | kdeinit |
| 4865 | puretec | 15 | 0 | 9992 | 9992 | 9116 | S | 1.9 | 4.0 | 2:47 | kdeinit |
| 4642 | rk | 15 | 0 | 32572 | 31M | 18044 | S | 0.7 | 13.1 | 2:47 | quanta |
| 6004 | rk | 15 | 0 | 12428 | 12M | 11044 | S | 0.7 | 5.0 | 0:01 | kdeinit |
| 13 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.3 | 0.0 | 0:10 | kjournald |
| 3561 | rk | 15 | 0 | 11964 | 11M | 10736 | S | 0.1 | 4.8 | 0:12 | kdeinit |
| 1 | root | 15 | 0 | 240 | 240 | 204 | S | 0.0 | 0.0 | 0:05 | init |
| 2 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:06 | keventd |
| 3 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:00 | kapmd |
| 4 | root | 34 | 19 | 0 | 0 | 0 | SWN | 0.0 | 0.0 | 0:00 | ksoftirqd_CPU0v |
| 5 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:03 | kswapd |
| 6 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:00 | bdflush |
| 7 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:00 | kupdated |
| 8 | root | 15 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:00 | kinoded |
| 9 | root | 23 | 0 | 0 | 0 | 0 | SW | 0.0 | 0.0 | 0:00 | mdrecoveryd |
*1 Üerblick auf der Kommandozeile mittels pstree
*2 Für jeden Prozess existiert ein Verzeichnis im Prozessdateisystem (/proc). Im einzelnen werden folgende Daten für jeden Prozess abgebildet:
| Dateiname | Inhalt |
|---|---|
| cmdline | aufrufende Kommandozeile |
| cwd | Link zum Arbeitsverzeichnis des Prozesses |
| environ | Umgebungsvariablen |
| exe | Programm |
| fd | die geöffneten Dateien |
| maps | Memorymapping |
| mem | Speicherverbrauch |
| root | |
| stat | Prozessstatus |
| statm | belegter Speicher |
| status | Tabelle des belegten Speichers |