FreeBSD es un sistema operativo multitarea. Esto significa que parece como si más de un programa se estuviera ejecutando al mismo tiempo. Cada programa uno de esos programas que se está ejecutando en un momento dado se denomina proceso. Cada orden que ejecuta iniciará al menos un proceso nuevo, y hay muchos procesos que se están que se están ejecutando en todo momento, manteniendo el sistema en funcionamiento.
Cada proceso tiene un identificador individual consistente en
un número llamado ID del proceso,
o PID, y al igual que sucede con los
ficheros, cada proceso tiene un propietario y un grupo. La
información de propietario y grupo se usa para determinar
qué ficheros y dispositivos puede abrir el proceso
mediante los permisos de fichero explicados anteriormente. La
mayoría de los procesos también tiene un proceso
padre. El proceso padre es el proceso que los inició. Por
ejemplo, si está tecleando órdenes en la shell,
la shell es un proceso, y cualquier orden que usted ejecute
también lo será. De este modo cada proceso que ejecute
tendrá como proceso padre a su shell. La excepción
es un proceso especial llamado init(8). init
es siempre el primer proceso, así que su PID siempre es 1.
El kernel arranca automáticamente init
en el arranque de FreeBSD.
Hay dos órdenes particularmente útiles para ver
los procesos en el sistema, ps(1) y top(1).
ps
se usa para mostrar una lista estática
de los procesos que se ejecutan en el sistema en es momento, y
puede mostrar sus PID, cuánta memoria está usando,
la línea de órdenes con la que fueron iniciados y
muchas más cosas. top
despliega todos
los procesos que se están ejecutando y actualiza la
pantalla cada pocos segundos para que pueda ver lo que
está haciendo su sistema.
Por omisión ps
solo le muestra las
órdenes que están ejecutando
y que sean propiedad de su usuario.
Por ejemplo:
%
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
Como puede ver en este ejemplo la salida de ps(1) está
organizada en columnas. PID
es el ID de proceso anteriormente expuesto. Los PIDs se asignan
a partir del 1 y hasta 99999, y vuelven a comenzar desde el 1 otra
cuando se terminan los números. La columna
TT
muestra la tty en la que el programa se está
ejecutando; podemos ignorarla tranquilamente por el momento.
STAT
muestra el estado del programa; de momento
también podemos ignorarlo. TIME
es la
cantidad de tiempo que el programa ha se ha estado ejecutando en la
CPU (generalmente no es el tiempo transcurrido desde que se
inició el programa, ya que la mayoría de los
programas pasan mucho tiempo esperando antes
de que necesiten gastar tiempo en la CPU. Finalmente,
COMMAND
es la línea de órdenes que
se empleó para ejecutar el programa.
ps(1) admite muchas opciones sobre la información
que se desea ver. Uno de los conjuntos más
útiles es auxww
. a
muestra información acerca de todos los procesos
ejecutándose, no solamente los suyos. u
despliega el nombre de usuario del propietario del proceso, así
como el uso de memoria. x
despliega información
acerca de los procesos dæmon y ww
hace que
ps(1) despliegue la línea de órdenes completa, en lugar
de truncarla cuando es demasiado larga para caber en la pantalla.
La salida de top(1) es similar. Veamos un ejemplo:
%
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 ...
La salida está dividida en dos secciones. La cabecera (las primeras cinco líneas) muestra el PID del último proceso en ejecutarse, la carga promedio del sistema (una medida de la carga del sistema), el «uptime» del sistema (tiempo desde el último reinicio) y la hora actual. Las otras cifras en la cabecera se relacionan con cuántos procesos hay en ejecución en el sistema (47 en este caso), cuánta memoria y espacio de intercambio (swap) está en uso, y cuánto tiempo está el sistema en diferentes estados de CPU.
Más abajo hay una serie de columnas con información similar a la salida de ps(1). Igual que antes, puede usted ver el PID, el nombre de usuario, la cantidad de tiempo de CPU en uso y la orden que se ejecutó. top(1) también mostrará por omisión la cantidad de espacio de memoria que emplea cada proceso. Está dividido en dos columnas, una para el tamaño total y otra para el tamaño residente (el tamaño total es cuánta memoria ha necesitado la aplicación y el tamaño residente es cuánta se está usando en ese momento concreto). En este ejemplo puede verse que Netscape® requerido casi 30 MB de RAM, pero actualmente solo está usando 9 MB.
top(1) actualiza automáticamente el listado cada
dos segundos, pero este lapso puede cambiarse mediante la
opción s
.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.