PS(1) Manual del Programador de Linux PS(1)
NOMBRE
ps - informa del estado de los procesos
SINOPSIS
ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1[[+|-]k2...]] [pids]
también existen tres opciones largas:
--sortX[+|-]key[,[+|-]key[,...]]
--help
--version
Se están desarrollando más opciones largas...
DESCRIPCIÓN
ps muestra una instantánea de los procesos actuales. Si quiere una
actualización contínua, use top. Esta página de manual documenta (o
por lo menos intenta documentar) la versión de ps basada en /proc.
OPCIONES DE LA LÍNEA DE COMANDOS
Las opciones de la línea de comandos para esta versión de ps proceden
de la versión BSD de ps, no de la versión System V.
Es recomendable que los argumentos de la línea de comandos no estén
precedidos por un carácter `-', porque en un futuro, el `-' se
utilizará para indicar argumentos del estándar Unix98, mientras que sin
`-' indicará el modo actual ``BSD extendido''.
Por ahora, ps mostrará una advertencia (warning) si usa un `-' para una
opción corta, pero aún así, todavía funcionará. Si tiene scripts shell
que utilizan los argumentos de ps tipo BSD, preste atención a las
advertencias y soluciónelas, o sus scripts dejarán de funcionar de
forma correcta en un futuro. Si quiere deshabilitar estas advertencias,
establezca la variable de entorno I_WANT_A_BROKEN_PS.
Existen además algunas ``opciones largas'' estilo GNU; véase más abajo.
l formato largo
u formato usuario: muestra el usuario y la hora de inicio
j formato trabajo (jobs): pgid sid
s formato señal (signal)
v formato vm
m muestra información de memoria (combínese con p para obtener el
número de páginas).
f formato "forest" ("bosque") de familias en forma de árbol
a muestra también los procesos de otros usuarios
x muestra procesos que no están controlados por ninguna terminal
S añade tiempo de CPU y fallos de página de los hijos
c nombre del comando obtenido de task_struct
e muestra ambiente (environment) después del nombre del comando y `
+ '
w Salida ancha (wide): no se truncan las líneas de comando para que
quepan en una línea. Para ser exactos, cada w que se especifica
añadirá una posible línea a la salida. Si el espacio no se
necesita, no se usa. Puede usar hasta 100 w's.
h sin cabecera (header)
r sólo procesos que se están ejecutando
n salida numérica para USER y WCHAN.
txx sólo procesos controlados por la tty xx; para xx debe usar bien el
nombre de un dispositivo bajo "/dev" o bien ese nombre sin las
letras tty o cu que lo preceden. Esta es la operación inversa que
ps utiliza para imprimir el nombre abreviado de tty en el campo
TT, por ejemplo, ps -t1.
O[+|-]k1[,[+|-]k2[,...]]
Ordena la lista de procesos de acuerdo con el ordenamiento multi-
nivel especificado por la secuencia de claves ordenación de CLAVES
DE ORDENACIÓN, k1, k2, Existen especificaciones de ordenación por
defecto para cada uno de los formatos de ps. Éstas pueden ser
anuladas por una ordenación especificada por el usuario. El `+' es
opcional, meramente para reiterar la dirección por defecto de una
clave. `-' invierte la dirección sólo de la clave que precede.
Como con t y pids, la opción O debe ser la última opción en un
argumento, aunque las especificaciones en argumentos posteriores
son concatenadas.
pids Lista sólo los procesos especificados; están delimitados por
comas. La lista se debe dar inmediatamente después de la última
opción en un argumento simple, sin intervención de espacios, por
ejemplo ps -j1,4,5. Las listas especificadas en los argumentos
siguientes son concatenadas, por ejemplo ps -l 1,2 3,4 5 6 listará
todos los procesos del 1 al 6 en formato largo. Los pids se listan
incluso si contradicen a las opciones 'a' y 'x'
OPCIONES DE LA LÍNEA DE COMANDOS LARGAS
Estas opciones están precedidas por un doble guión.
--sortX[+|-]key[,[+|-]key[,...]]
Selecciona una clave de varias letras de la sección CLAVES DE
ORDENACIÓN. X puede ser cualquier carácter de separación. GNU
prefiere `='. El `+' es realmente opcional, ya que la dirección
por defecto es creciente en orden numérico o lexicográfico. Por
ejemplo: ps -jax --sort=uid,-ppid,+pid
--help
Muestra un mensaje de ayuda que resume el uso y da una lista de
claves de ordenación soportadas. Esa lista puede estar más
actualizada que la de esta página del manual.
--version
Muestra la versión y la procedencia de este programa.
CLAVES DE ORDENACIÓN
Nótese que los valores utilizados en la ordenación son valores internos
que ps utiliza y no los valores `transformados' (`cooked') que aparecen
en alguno de los campos de la salida. Si alguien, voluntariamente,
quiere escribir alguna función especial de comparación para los valores
transformados, ... ;-)
CORTA LARGA DESCRIPCIÓN
c cmd nombre simple del ejecutable
C cmdline línea de comandos completa
f flags flags como en el campo F del formato largo
g pgrp ID del grupo del proceso
G tpgid ID del grupo del proceso que controla la tty
j cutime tiempo de usuario acumulado
J cstime tiempo de sistema acumulado
k utime tiempo de usuario
K stime tiempo de sistema
m min_flt número de fallos de página menores
M maj_flt número de fallos de página mayores
n cmin_flt fallos menores de página acumulados
N cmaj_flt fallos mayores de página acumulados
o session ID de la sesión
p pid ID del proceso
P ppid ID del proceso padre
r rss tamaño de la parte residente
R resident páginas residentes
s size memoria usada en kilobytes
S share número de páginas compartidas
t tty el tty que usa el proceso
T start_time hora en la que el proceso se inició
U uid ID del usuario
u user nombre del usuario
v vsize tamaño total VM en bytes
y priority prioridad en el planificador del kernel
DESCRIPCIÓN DE LOS CAMPOS
PRI Este es el campo contador de la estructura de la tarea. Es el
tiempo en HZ de la posible rodaja de tiempo del proceso.
NI Valor nice estándar de Unix; un número positivo significa menos
tiempo de cpu.
SIZE Tamaño virtual de la imagen; Tamaño de text+data+stack.
RSS Tamaño de la parte residente; kilobytes del programa en memoria.
WCHAN
Nombre de la función del kernel que el proceso estaba ejecutando
cuando pasó a estar durmiendo, con el `sys_' quitado del nombre de
la función. Si no existe el fichero /etc/psdatabase , se muestra
sólo un número hexadecimal.
STAT Información acerca del estado del proceso. El primer campo es R
para preparado para ejecución (runnable), S para durmiendo
(sleeping), D para indicar letargo ininterrumpible
(uninterruptible sleep), T para parado o trazado (traced), o Z
para un proceso zombie. El segundo campo contiene W si el proceso
no tiene páginas residentes. El tercer campo es N si el proceso
tiene un número nice positivo (campo NI ).
TT Tty asociada.
PAGEIN
Número de fallos de página mayores (fallos de página que causan
lectura de páginas desde el disco, incluyendo las páginas leídas
desde el buffer de caché).
TRS Tamaño del código residente.
SWAP Kilobytes (o páginas si usamos -p ) en el dispositivo de
intercambio (swap).
SHARE
Memoria compartida.
ACTUALIZANDO
Este ps (basado en proc) lee los ficheros en el sistema de ficheros
proc , montado en /proc. No necesita un kmem con suid ni privilegios
para funcionar. No dé a este ps ningún permiso especial.
Necesitará actualizar el fichero /etc/psdatabase ejecutando
/usr/sbin/psupdate para obtener una información comprensible del campo
WCHAN. Debería hacer esto cada vez que compile un nuevo kernel.
Debería también ejecutar 'ps' como root una vez y cada vez que los
dispositivos tty en el directorio "/dev" cambien.
Como procps-1.00, ps/top leen System.map directamente si existe. El
camino de búsqueda para la resolución de dirección a símbolo del kernel
(address-to-symbol) es:
$PS_SYSTEM_MAP
/boot/System.map-`uname -r`
/boot/System.map
/lib/modules/`uname -r`/System.map
/etc/psdatabase
/boot/psdatabase-`uname -r`
/boot/psdatabase,
/lib/modules/`uname -r`/psdatabase
NOTAS
El miembro used_math de task_struct no se muestra, ya que crt0.s
comprueba si existe emulación de coprocesador matemático. Esto hace que
el flag math esté activado para todos los procesos, por lo que es
inútil.
Los programas intercambiados a disco se mostrarán sin los argumentos de
la línea de comando, y a no ser que se de la opción c , entre
paréntesis.
%CPU muestra el porcentaje tiempo de cpu/tiempo real. No llegará al
100% a no ser que tengas suerte. Es el tiempo utilizado dividido por
el tiempo que el proceso se ha estado ejecutando.
Los campos SIZE y RSS no cuentan las tablas de páginas y la task_struct
del proceso; esto supone por lo menos 12k de memoria que siempre está
residente. SIZE es el tamaño virtual del proceso (código+datos+pila).
Para conseguir la correspondencia entre número y nombre de dispositivo,
ps mantiene un fichero llamado "/etc/psdevtab" (actualizado cada vez
que "/dev" se actualiza y los permisos permitan la actualización). Si
los permisos no lo permiten, cada invocación de ps requiere que se
ejecute un stat(2) a cada fichero en el directorio "/dev". Si las
entradas en "/dev" cambian a menudo en su sistema, debería ejecutar ps
como root a menudo. Puede que añada un fichero accesorio bajo $HOME si
se demanda por los usuarios.
AUTOR
ps fue escrito por primera vez por Branko Lankester
. Michael K. Johnson lo
modificó de forma significativa para que utilizara el sistema de
ficheros proc, cambiando algunas cosas en el proceso. Michael Shields
añadió la posibilidad de dar listas de pids.
Charles Blake añadió ordenación multi-nivel, la
librería estilo dirent, la base de datos de correspondencia de nombre
de dispositivo a número, la búsqueda binaria aproximada en System.map,
y mejoró el código y la documentación. David Mossberger-Tang escribió
el soporte genérico BFD para psupdate. Michael K. Johnson
es el encargado del mantenimiento actualmente.
Por favor, envíe informes de los fallos a
Cohesive Systems 3 Septiembre 1997 PS(1)