A FreeBSD egy többfeladatos operációs rendszer. Ez azt jelenti, hogy képes látszólag egyszerre több programot is futtatni. Az így egyszerre futó programokat egyenként folyamatoknak (process) nevezzük. Minden kiadott parancsunk elindít legalább egy ilyen folyamatot, és a rendszerünk mozgásban tartásához bizonyos rendszerszintű folyamatok állandóan futnak a háttérben.
Minden folyamatot egy
folyamatazonosítónak (process
ID vagy PID) nevezett szám
azonosít egyértelműen, és az
állományokhoz hasonlóan, minden folyamatnak
van tulajdonosa és csoportja is. A tulajdonos és a
csoport ismeretében állapítja meg a rendszer,
hogy az adott folyamat a korábban említett
engedélyek szerint milyen állományokhoz
és eszközökhöz férhet hozzá.
Ezenkívül a legtöbb folyamatnak van még
egy szülőfolyamata is. A szülőfolyamat az a
folyamat, amely az adott folyamatot elindította.
Például amikor parancsokat adunk egy
parancsértelmezőn keresztül, akkor maga a
parancsértelmező is egy ilyen folyamat lesz
ugyanúgy, ahogy a benne kiadott parancsok által
elindított programok. Ennek megfelelően az így
létrehozott összes folyamat szülője maga a
parancsértelmező folyamata lesz. Az említettek
alól egyik kivétel az init(8) nevű
speciális folyamat. Az init
lesz a
rendszerben mindig az első folyamat, ezért a PID-je is
mindig 1. Az init
programot a FreeBSD
indulásakor a rendszermag fogja automatikusan
elindítani.
A rendszerben futó programok
vizsgálatához két, különösen
hasznos parancsot találhatunk: ezek a ps(1) és
a top(1). A ps
parancs használatos
a pillanatnyilag futó programok statikus
listájának megjelenítésére.
Ebben olvashatjuk a futó programok
azonosítóit, mennyi memóriát
használnak éppen, milyen paranccsal
indították ezeket stb. A top
parancs mutatja az összes aktívan futó
programot, majd néhány másodpercenként
automatikusan frissíti ezt a listát, aminek
révén folyamatosan láthatjuk, miként
viselkednek a futó programok.
A ps
alapértelmezés szerint
csupán az általunk futtatott programokat mutatja.
Például:
%
ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishAhogy az a fenti példában is látszik, a
ps(1) kimenete oszlopokra tagolható. Ezek
közül a PID
tartalmazza a
korábban már ismertetett
folyamatazonosítókat. Az azonosítók
1-től indulva egészen 99999-ig
sorszámozódhatnak, illetve ha kifutnánk
belőlük, akkor a számozás kezdődik
elölről (azonban a használatban levő
azonosítók sosem kerülnek újra
kiosztásra). A TT
oszlopban
láthatjuk azt a terminált, amelyen az adott program
éppen fut, de ezt pillanatnyilag akár nyugodtan
figyelmen kívül is hagyhatjuk. A
STAT
oszlopban a program
állapotát kapjuk meg, de szintén
átugorható. A TIME
a program
processzoron eltöltött idejét mutatja — ez
általában nem arra utal, hogy mennyi ideje fut maga
a program, hiszen a legtöbb program sok időt tölt
tétlenül, mielőtt egyáltalán
szüksége lenne processzora. Végezetül a
COMMAND
oszlopban olvashatjuk azt a parancsot,
amellyel a programot elindították.
A ps(1) számos különféle
beállítást ismer az általa
megjelenített információk
megválasztásához. Az egyik ilyen
leghasznosabb beállítás az
auxww
: az a
segítségével az összes futó
programot láthatjuk, nem csak a sajátjainkat; az
u
megadásával
láthatóvá válik a folyamat
tulajdonosának a felhasználói neve, valamint
a memóriahasználata is; az x
megmutatja a démon (avagy háttér)folyamatok
adatait is és a ww
hatására
pedig a ps(1) az összes folyamathoz a teljes parancssort
kiírja, még akkor is, ha nem férne ki a
képernyőre.
A top(1) kimenete is hasonló. Ha elindítjuk, általában ezt láthatjuk:
%
top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...A kimenet két részre osztható. A fejlécben (vagyis az első öt sorban) látható az utoljára futtatott program azonosítója (PID), a rendszer átlagos terhelése (load average, amellyel mérjük, hogy a rendszerünk mennyire lefoglalt), a rendszer indítása óta eltelt idő (up mint uptime) és a jelenlegi idő. A fejlécben még megtalálhatjuk azt is, mennyi program fut (esetünkben ez most 47), mennyi memóriát és lapozóállományt használnak, és mennyi időt tölt a rendszer a processzor különböző állapotaiban.
A fejléc alatt a ps(1) kimenetéhez hasonló módon oszlopokba rendezve találhatjuk meg a folyamatok adatait: az azonosítóikat, a tulajdonosaik nevét, a felhasznált processzoridőt, a futtatott parancsot. A top(1) alapértelmezés szerint mutatja a futó programok által használt memória mennyiségét is: ez további két oszlopra oszlik, ahol az egyikben a teljes memóriafoglalást (SIZE), a másikban pedig a jelen pillanatban aktívan használt memóriát (RES) láthatjuk. A példában látható is, hogy a Netscape® (navigator-linu) alkalmazásnak majdnem 30 MB-nyi memóriára van szüksége, de ebből aktívan csak 9 MB-ot használ.
A top(1) a kijelzést minden második
másodpercben magától frissíti, de ez
az s
kapcsolóval
állítható.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.