FreeBSD on mitmetegumiline operatsioonisüsteem. See tähendab, et jääb mulje, justkui töötaks korraga mitu programmi. Iga programmi, mis töötab mingil ajahetkel, nimetatakse protsessiks . Iga käsk, mille sa käivitad, käivitab vähemalt ühe uue protsessi, peale selle on ka hulk süsteemiprotsesse, mis töötavad koguaeg ja hoiavad süsteemi funktsionaalsena.
Igat protsessi identifitseeritakse unikaalsena protsessi ID ehk PID järgi ja nagu failidelgi on ka igal protsessil omanik ja grupp. Omaniku ja grupi informatsioon määrab ära, milliseid faile ja seadmeid protsess tohib kasutada, seda eelpool kirjeldatud failiõiguste põhjal. Paljudel protsessidel on ka ülemprotsess. See on protsess, mis nad käivitas. Näiteks kui sa kirjutad shelli käske, siis shell on protsess ja kõik käsud, mis sa käivitad, on ka protsessid. Iga selliselt tekitatud protsessi ülemprotsessiks on shell. Erandiks on eriline protsess, mille nimi on init. init on alati esimene protsess, seega on tema PID alati 1. init käivitatakse automaatselt kerneli poolt, kui FreeBSD stardib.
Süsteemis käivate protsesside nägemiseks on eriti kasulikud kaks käsku: ps(1) ja top(1). Käsku ps(1) kasutatakse staatilise nimekirja saamiseks hetkel jooksvatest protsessidest ja see käsk võib näidata nende protsesside PID'i, mälukasutust, käsku, millega protsess käima pandi, ja nii edasi; käsk ps(1) näitab kõiki jooksvaid protsesse ja värskendab infot iga paari sekundi tagant, et sa saaksid pidevalt jälgida, mida su arvuti parajasti teeb.
Vaikimisi näitab ps(1) ainult käske, mis hetkel töötavad ja mille omanikuks oled sina. Näiteks:
% 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/sawfish
Nagu siit näha võib, on käsu ps(1) väljastatav info jagatud mitmeks tulbaks. PID on protsessi ID millest oli juba eespool juttu, PID'e antakse alates numbrist 1, kuni numbrini 99999 ja seejärel uuesti otsast peale, kui arvud otsa lõppevad. TT näitab tty'd, millel programm jookseb, hetkel võime seda julgelt lihtsalt ignoreerida. STAT näitab programmi olekut, ka seda võime praegu ignoreerida. TIME näitab, kui kaua on programm CPU peal töötanud. See ei ole tingimata võrdne ajahulgaga, mis on möödunud hetkest, kui sa programmi käivitasid, kuna mõned programmid veedavad suure hulga aega millegi ootamise taga enne, kui nad CPU aega võtavad. Ja viimane, COMMAND-tulp näitab käsurida, millega programm käivitati.
ps(1) toetab ka mitmeid erinevaid valikuid, mis muudavad
väljastatavat informatsiooni. Üks kasulikumaid valikute komplekte on
auxww. a näitab infot kõikide
protsesside kohta, mis jooksevad, mitte ainult sinu omade kohta.
u näitab protsessi omaniku kasutajanime ja ka
mälukasutust. x näitab infot deemonprotsesside
kohta ja ww sunnib ps(1)'i näitama täielikku
käsku, millega programm käivitati (vaikimisi lõigatakse
käsu lõpp ära, kui see ekraanile mahtumiseks liiga pikk on).
top(1) väljastab infot üsna sarnaselt. Näidis-sessioon näeb välja umbes selline:
% 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 ...
Väljund on jagatud kahte sektsiooni. Päis (esimesed viis rida) näitavad viimasena jooksnud protsessi PID'i, süsteemi koormuse keskmisi (mis näitavad, kui koormatud süsteem on), süsteemi uptime'i (aega alates viimasest reboodist) ja praegust kellaaega. Teised numbrid päises näitavad, kui palju palju protsesse kokku töötab (antud juhul 47), kui palju mälu ja saaleala on kasutuses ja kui palju aega süsteem veedab erinevates CPU olekutes.
Sellest allpool on mitu tulpa, mis sisaldavad umbes sama informatsiooni nagu ps(1)-i väljundki. Nagu ennegi, näed sa PID'i, kasutajanime, kasutatud CPU aega ja käsku, millega programm käivitati. top(1) näitab vaikimisi ka, kui palju mälu mingi protsess võtab. See on jagatud kahte tulpa, millest üks näitab kogu suurust ja teine residentset suurust - kogu suurus on see, kuipalju mälu antud protsess on vajanud, ja residentne suurus näitab, kui palju mälu protsess tegelikult antud hetkel kasutab. Selle näite puhul on näha, et Netscape® on vajanud vahepeal 30MB mälu ja hetkel kasutab ainult 9MB.
top(1) uuendab informatsiooni automaatselt iga kahe sekundi tagant;
seda saab muuta valiku s abil.