FreeBSD е многозадачна операционна система. Това означава, че може да бъде изпълнена повече от една програма. Всяка от стартираните програми в определен момент се нарича процес. Всяка команда която изпълните ще стартира поне един нов процес, също има определен брой системни процеси, които са стартирани постоянно, поддържайки системата функционална.
Всеки процес уникално се идентифицира с номер наречен процес ID, или PID и и подобно на файловете, всеки процес има собствени потребител и група. Информацията за притежателя и групата се използва, за да се определи до кои файлове и устройства може да получава достъп. Повечето процеси имат родителски процес - процеса които ги е стартирал. Например ако пишете команди в програмния интерпретатор (шел), той е процес и всички команди които стартирате са също процеси. За всеки от процесите които стартирате по този начин шела ще бъде родителски процес. Изключение от това правило е специален процес наречен init(8). init е винаги първият процес, така че неговия PID е винаги 1. init се стартира автоматично от ядрото когато FreeBSD стартира.
Две команди са особено полезни за да видите стартираните процеси в системата, ps(1) и top(1). Командата ps служи за показване на статичен списък на стартираните в момента процеси и може да показва техния PID, колко памет използват, командната линия с която са били стартирани и т.н. Командата top показва стартираните процеси и опреснява информацията всеки няколко секунди така че можете интерактивно да видите какво прави компютърът ви.
По подразбиране, ps показва само командите които са стартирани и които се притежават от вас. Например:
% 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
Както можете да видите от този пример, резултата от ps(1) е организиран в няколко колони. PID е номера на процеса споменат преди малко. PID се задават от 1 до 99999, и започват пак от начало когато номерата се изчерпат. Колоната TT показва tty в които е изпълнена програмата и за момента ще бъде прескочен. STAT показва статуса на програмата и също за момента няма да говорим за него. TIME е времето през което програмата е била стартирана на процесор CPU-- това обикновено не е равно на времето през което програмата е била стартирана, тъй като повечето програми чакат нещо да се случи за да използват процесорно време. Накрая, COMMAND е командната линия използвана за да се стартира програмата.
ps(1) поддържа множество опции за да промените информацията която се показва. Един от най-използваните набори от опции е auxww. a показва информация за всички стартирани процеси, не само за вашите. u показва потребителското име на притежателя на процеса, също така и използваната памет. x показва информация за процеси демони и ww предизвиква ps(1) да покаже пълната командна линия вместо да я съкращава ако е твърде дълга за да се събере на екрана.
Резултата от top(1) е подобен. Примерна сесия изглежда подобно на това:
% 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 ...
Резултата е разделен на две секции, Заглавната част (първите пет реда) показват PID на последния стартиран процес, средното натоварване на системата (което показва колко е натоварена системата в момента), системното време без рестартиране (uptime) и текущото време. Останалите неща в заглавната част показват колко процеса са стартирани (47 в примера) колко памет и поделено пространство е използвано и колко време машината е прекарала в различни режими на процесорите.
По долу са серия от колони съдържащи подобна информация на резултата от ps(1). Както и преди, можете да видите PID, потребителя, процесорното време и командата с която е бил стартиран процеса. top(1) също по подразбиране показва количеството памет заета от процеса. Това е разделено на две колони, една за общия размер и една за резидентния -- общия размер е от колко памет приложението се е нуждаело а резидентен размер е колко памет приложението използва в момента. В този пример можете да видите, че Netscape® е изискал почти 30 MB RAM памет, но в момента използва само 9 MB.
top(1) автоматично опреснява екрана на всеки две секунди; това може да бъде променено с опция s.
| Prev | Home | Next |
| Монтиране и демонтиране на файлови системи | Up | Демони, сигнали и прекратяване (killing) на процеси |
Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
За въпроси относно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси относно този документ, e-mail <doc@FreeBSD.org>.