Diferencia entre revisiones de «Comando ps»

(Claves de la Ordenación)
m (Texto reemplazado: «<div align="justify">» por «»)
 
(No se muestran 13 ediciones intermedias de 7 usuarios)
Línea 1: Línea 1:
                                 
+
{{Definición
{{Ficha Software
+
|nombre=ps
|nombre= ps
 
|familia=
 
 
|imagen=Ls.png
 
|imagen=Ls.png
|tamaño=250px
+
|tamaño=
|descripción=
+
|concepto=Utilizado para mostrar por pantalla un listado de los procesos que se están ejecutando en el sistema
|imagen2=
 
|tamaño2=
 
|descripción2=
 
|creador=
 
|desarrollador=
 
|diseñador=
 
|modelo de desarrollo=
 
|lanzamiento inicial=
 
|versiones=
 
|última versión estable=
 
|género=
 
|sistemas operativos=Unix
 
|idioma=
 
|licencia=GNU
 
|premios=
 
|web=
 
 
}}
 
}}
                                 
+
'''Comando ps ("process status", estado de procesos)'''. Se utiliza para mostrar por pantalla un listado de los procesos que se están ejecutando en el sistema. Esta asociado al sistema operativo [[UNIX]]  
==Introducción==
+
 
[[UNIX]] es uno de los [[sistemas operativos]] más populares del mundo debido a su extenso soporte y distribución. Originalmente fue desarrollado como sistema multitarea con tiempo compartido para miniordenadores y mainframes a mediados de los ‘70, y desde entonces se ha convertido en uno de los sistemas más utilizados a pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su estandarización. [[Linux]] es una versión de [[UNIX]] de libre distribución, inicialmente desarrollada por Linus Torvalds en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la ayuda de muchos programadores y expertos de [[UNIX]] a lo largo y ancho del mundo, gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a [[Linux]] y desarrollar nuevos módulos o cambiarlo a su gusto. En este sistema operativo los comandos son una parte muy importante cuando se desea entrar en la administración y programación de este sistema operativo. Existe una inmensa cantidad de comandos ya sean para ayuda, para manejo de archivos y directorios, para manejo de usuarios, de procesos, de disco, de sistema, de red, de impresoras, etc. El propósito de este artículo es darle a conocer a usted querido usuario la importancia, uso y diferntes aplicaciones del comando ps.
+
==Sintaxis==
==Sinopsis==
+
* ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1[[+|-]k2...]] [pids]
      ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1[[+|-]k2...]] [pids]
+
 
 
==Descripción==
 
==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.
 
'''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==
 
==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''.
 
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'''.
+
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'''.
 +
 
 
==Opciones Largas estilo GNU==
 
==Opciones Largas estilo GNU==
      '''l'''    formato largo
+
* '''l'''    formato largo
  
      '''u'''    formato usuario: muestra el usuario y la hora de inicio
+
* '''u'''    formato usuario: muestra el usuario y la hora de inicio
  
      '''j'''    formato trabajo (jobs): pgid sid
+
* '''j'''    formato trabajo (jobs): pgid sid
  
      '''s'''    formato señal (signal)
+
* '''s'''    formato señal (signal)
  
      '''v'''    formato vm
+
* '''v'''    formato vm
  
      '''m'''    muestra información de memoria (combínese con p para obtener el número de
+
* '''m'''    muestra información de memoria (combínese con p para obtener el número de        páginas).
       páginas).
 
  
      '''f'''    formato "forest" ("bosque") de familias en forma de árbol
+
* '''f'''    formato "forest" ("bosque") de familias en forma de árbol
  
      '''a'''    muestra también los procesos de otros usuarios
+
* '''a'''    muestra también los procesos de otros usuarios
  
      '''x'''    muestra procesos que no están controlados por ninguna terminal
+
* '''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
+
* '''S'''    añade tiempo de CPU y fallos de página de los hijos
  
      '''c'''    nombre del comando obtenido de task_struct
+
* '''c'''    nombre del comando obtenido de task_struct
  
      '''e'''    muestra  ambiente (environment) después del nombre del comando y `+'
+
* '''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
+
* '''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 100w's.
      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 100w's.
 
  
      '''h'''    sin cabecera (header)
+
* '''h'''    sin cabecera (header)
  
      '''r'''    sólo procesos que se están ejecutando
+
* '''r'''    sólo procesos que se están ejecutando
  
      '''n'''    salida numérica para USER y WCHAN.
+
* '''n'''    salida numérica para USER y WCHAN.
 +
 
 +
* '''t'''''xx''  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 multinivel 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.
  
      '''t'''''xx''  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 multinivel 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.
 
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'''  
+
'''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'
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==
 
==Opciones de la Línea de Comandos Largas==
 
Estas opciones están precedidas por un doble guión.
 
Estas opciones están precedidas por un doble guión.
  
      '''--sortX[+|-]key[,[+|-]key[,...]]'''
+
* '''--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
 
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'''
+
* '''--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.
 
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'''
+
* '''--version'''
 
Muestra la versión y la procedencia de este programa.
 
Muestra la versión y la procedencia de este programa.
 +
 
==Claves de la Ordenación==
 
==Claves de la 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, ... ;-)
+
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'''
  
  '''CORTA  LARGA        DESCRIPCIÓN'''
+
* c          cmd            nombre simple del ejecutable
  
      c    cmd        nombre simple del ejecutable
+
* C          cmdline      línea de comandos completa
  
      C     cmdline    línea de comandos completa
+
* f          flags     flags como en el campo F del formato largo
  
      f    flags      flags como en el campo F del formato largo
+
* g          pgrp            ID del grupo del proceso
  
      g    pgrp        ID del grupo del proceso
+
* G        tpgid            ID del grupo del proceso que controla la tty
  
      G    tpgid      ID del grupo del proceso que controla la tty
+
* j          cutime          tiempo de usuario acumulado
  
      j    cutime      tiempo de usuario acumulado
+
* J          cstime          tiempo de sistema acumulado
  
      J    cstime      tiempo de sistema acumulado
+
* k        utime            tiempo de usuario
  
      k    utime      tiempo de usuario
+
* K          stime          tiempo de sistema
  
       K    stime      tiempo de sistema
+
* m      min_flt       número de fallos de página menores
  
      m    min_flt    número de fallos de página menores
+
* M          maj_flt      número de fallos de página mayores
  
      M    maj_flt    número de fallos de página mayores
+
* n          cmin_flt      fallos menores de página acumulados
  
      n    cmin_flt    fallos menores de página acumulados
+
* N          cmaj_flt      fallos mayores de página acumulados
  
      N    cmaj_flt    fallos mayores de página acumulados
+
* o          session      ID de la sesión
  
      o    session    ID de la sesión
+
* p        pid              ID del proceso
  
      p    pid         ID del proceso
+
* P         ppid            ID del proceso padre
  
      P    ppid        ID del proceso padre
+
* r          rss                tamaño de la parte residente
  
      r    rss        tamaño de la parte residente
+
* R          resident  páginas residentes
  
      R    resident    páginas residentes
+
* s          size              memoria usada en kilobytes
  
      s    size        memoria usada en kilobytes
+
* S        share            número de páginas compartidas
  
      S    share      número de páginas compartidas
+
* t          tty                el tty que usa el proceso
  
      t    tty        el tty que usa el proceso
+
* T    start_time  hora en la que el proceso se inició
  
       T    start_time  hora en la que el proceso se inició
+
* U          uid       ID del usuario
  
      U    uid         ID del usuario
+
* u         user              nombre del usuario
  
       u    user        nombre del usuario
+
* v       vsize            tamaño total VM en bytes
  
      v     vsize      tamaño total VM en bytes
+
* y      priority     prioridad en el planificador del [[kernel]]
  
      y    priority    prioridad en el planificador del kernel
+
Ejemplo de uso del comando ps:
 +
                                 
 +
[[Image:ejemplo ps.png|center]]
  
 
==Descripción de los Campos==
 
==Descripción de los Campos==
      '''PRI''' Este es el campo contador de la estructura  de  la  tarea.  Es  el
+
* '''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.
      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.
  
      '''NI'''   Valor  nice  estándar  de Unix; un número positivo significa menos tiempo
+
* '''SIZE''' Tamaño virtual de la imagen; Tamaño de text+data+stack.
      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.
  
      '''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.
  
      '''WCHAN''' Nombre de la función del kernel que el proceso  estaba ejecutando cuando
+
* '''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 zombieEl  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 ).
       pasó a estar durmiendo, con el `sys_' quitado del nombre de la funciónSi 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
+
* '''T'''   Tty asociada.
      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 ).
 
  
      '''T'''   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é).
  
      '''PAGEIN''' Número de  fallos  de página mayores (fallos de página que causan
+
* '''TRS'''  Tamaño del código residente.
      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).
  
      '''SWAP''' Kilobytes (o páginas si usamos -p ) en el dispositivo de intercambio(swap).
+
* '''SHARE''' Memoria compartida.
  
      '''SHARE''' Memoria compartida.
+
== Actualizando ==
==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.
 
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.
 
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:
 
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
+
$PS_SYSTEM_MAP
                  /boot/System.map-`uname -r`
+
/boot/System.map-`uname -r`
                  /boot/System.map
+
/boot/System.map
                  /lib/modules/`uname -r`/System.map
+
/lib/modules/`uname -r`/System.map
                  /etc/psdatabase
+
/etc/psdatabase
                  /boot/psdatabase-`uname -r`
+
/boot/psdatabase-`uname -r`
                  /boot/psdatabase,
+
/boot/psdatabase,
                  /lib/modules/`uname -r`/psdatabase
+
/lib/modules/`uname -r`/psdatabase
==Notas==
 
      El miembro used_math de task_struct no se muestra, ya que  crt0.s  com‐
 
      prueba 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
+
== Notas ==
      la  línea de comando, y a no ser que se de la opción c , entre paréntesis.
+
El miembro used_math de task_struct no se muestra, ya que crt0.s  com‐prueba 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.
  
      %CPU muestra el porcentaje tiempo de cpu/tiempo real. No llegará al100% a no ser que  
+
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
      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;
+
% CPU muestra el porcentaje tiempo de cpu/tiempo real. No llegará al 100 % a no ser que
      esto supone por lo menos 12k de memoria que siempre está residente.  SIZE es el tamaño
+
tengas suerte.  Es el tiempo utilizado dividido por el tiempo que el proceso se ha
      virtual del proceso (código+datos+pila).
+
estado
  
      Para conseguir la correspondencia entre número y nombre de dispositivo, ps mantiene un
+
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á residenteSIZE es el tamaño virtual del proceso (código+datos+pila).
      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.
 
==Fuentes==
 
AUTOR: Branko  Lankester
 
 
 
Modificado por: Michael  K.  Johnson, Michael  Shields, Charles  Blake, David Mossberger-Tang
 
 
 
Actuzalizado Actualmente por: Michael  KJohnson
 
 
 
Publicado por: Egber Gallardo García
 
 
 
==Enlaces Externos==
 
http://www.linuxtotal.com
 
 
 
http://www.webtutoriales.com/tutoriales/linux/comandos-linux.23.html
 
 
 
http://linuxcomandos.blogspot.com/2008/04/comando-mkdir.html
 
 
 
http://www.uam.es/personal_pdi/ciencias/ruben/master/CNC/TEMAS/Linux.html
 
  
 +
Para conseguir la correspondencia entre número y nombre de dispositivo, ps mantiene un 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 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.
  
 +
==Fuentes==
 +
*http://rm-rf.es/el-comando-ps-listar-y-manejar-procesos/
 +
*[http://www.webtutoriales.com/tutoriales/linux/comandos-linux.23.html Webtutoriales]
 +
*[http://linuxcomandos.blogspot.com/2008/04/comando-mkdir.html Linux comandos]
 +
*[http://www.uam.es/personal_pdi/ciencias/ruben/master/CNC/TEMAS/Linux.html Linux]
  
[[Category:Software]]
+
[[Categoría:GNU]][[Categoría:Núcleo_Linux]][[Categoría:Comandos de sistemas operativos]]

última versión al 09:32 1 ago 2019

ps
Información sobre la plantilla
Ls.png
Concepto:Utilizado para mostrar por pantalla un listado de los procesos que se están ejecutando en el sistema

Comando ps ("process status", estado de procesos). Se utiliza para mostrar por pantalla un listado de los procesos que se están ejecutando en el sistema. Esta asociado al sistema operativo UNIX

Sintaxis

  • ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1-]k2... [pids]

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.

Opciones Largas estilo GNU

  • 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 100w'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 multinivel 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 la 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

Ejemplo de uso del comando ps:

Ejemplo ps.png

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 ).
  • T 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 com‐prueba 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

% 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

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 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 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.

Fuentes