Cómo usar el comando ps para monitorear procesos de Linux

Contenidos

Una ventana de terminal en una computadora portátil con Linux.

Obtenga una instantánea de los procesos que se ejecutan en su computadora Linux con el ps mando. Localice procesos por nombre, usuario o inclusive terminal con tantos o tan pocos detalles como necesite. Te mostramos cómo.

Administración de procesos en Linux

El corazón de todos los sistemas operativos Linux y tipo Unix es el kernel. Entre sus muchas responsabilidades se encuentra la asignación de recursos del sistema, como RAM y tiempo de CPU. Estos deben combinarse en tiempo real para que todos los procesos en ejecución obtengan su parte justa, de acuerdo con la prioridad de cada tarea.

A veces, las tareas pueden bloquearse, entrar en un circuito cerrado o dejar de responder por otras razones. O pueden continuar ejecutándose, pero consumen demasiado tiempo de CPU o RAM, o se comportan de una manera igualmente antisocial. A veces, las tareas deben ser eliminadas como misericordia para todos los involucrados. El primer paso. Decididamente, es identificar el procedimiento en cuestión.

Pero tal vez no tenga ningún problema de tarea o rendimiento en absoluto. Tal vez solo tenga curiosidad sobre qué procesos se están ejecutando dentro de su computadora y le gustaría echar un vistazo debajo del capó. los ps El comando satisface ambas necesidades. Te lo dá una instantánea de lo que está sucediendo dentro de su computadora «ahora.»

ps es lo suficientemente flexible para brindarle exactamente la información que necesita en exactamente el formato que le gustaría. En realidad, ps tiene muchas opciones. Las alternativas descritas aquí cubrirán las necesidades más comunes. Si quieres profundizar en ps de lo que lo hemos tomado en este post, encontrará que nuestra introducción hace que la página de manual sea más fácil de digerir.

Procesos de listado

La forma más fácil de utilizar ps es encenderlo sin parámetros:

ps

ps muestra una lista de los procesos iniciados por el usuario que ejecutó el comando.

Las cuatro columnas son:

  • PID: El número de identificación del procedimiento del procedimiento.
  • TTY: El nombre de la consola en la que el usuario inició sesión.
  • TIEMPO: La cantidad de tiempo de procesamiento de la CPU que ha utilizado el procedimiento.
  • CMD: El nombre del comando que inició el procedimiento

Procedimiento de listado para todos los usuarios

agregando el -e (seleccione todos los procesos) podemos hacer ps enumerar los procesos que han sido iniciados por todos los usuarios, no solo el usuario que está ejecutando el ps mando. Debido a que esta será una lista larga, la estamos integrando en less.

ps -e | less

La lista de procesos se canaliza a less.

Tenemos muchas más entradas en el listado, pero vemos las mismas cuatro columnas que antes. Las entradas con un signo de interrogación ? en el TTY La columna no se inició desde una ventana de terminal.

Mostrar jerarquía de procesos

A veces, puede ayudar a solucionar un obstáculo o identificar un procedimiento en particular si puede ver qué procesos iniciaron otros procesos. Usamos el -H (jerarquía) opción para hacerlo.

ps -eH | less

La sangría indica qué procesos son padres de qué otros procesos.

Para agregar un poco más de claridad, podemos preguntar ps para agregar algo ASCII líneas y para dibujar la jerarquía como un árbol. La opción para hacer esto es la --forest opción.

ps -eH --forest | less

Esto facilita el seguimiento de qué procesos son los padres de otros procesos.

Listado de procesos por nombre

Puede canalizar la salida desde ps a través de grep para listar entradas que tienen nombres que coinciden con el término de búsqueda. Aquí buscamos entradas que coincidan con el término de búsqueda «firefox»:

ps -e | grep firefox

Para este caso, la salida es una entrada única para el procedimiento que nos interesa. Decididamente, si hubiéramos lanzado varias instancias de Firefox, habría más de un elemento devuelto en el listado.

Mostrar más columnas en la salida

Para agregar más columnas a la salida, use el -f opción (formato completo).

ps -ef | less

Se incluye un conjunto adicional de columnas en la salida de ps.

Las columnas son:

  • UID: ID de usuario del propietario de este procedimiento.
  • PID: El ID de procedimiento del procedimiento.
  • PPID: ID del procedimiento principal del procedimiento.
  • C: La cantidad de hijos que tiene el procedimiento.
  • TIEMPO: Hora de inicio. El momento en que comenzó el procedimiento.
  • TTY: El nombre de la consola en la que el usuario inició sesión.
  • TIEMPO: La cantidad de tiempo de procesamiento de la CPU que ha utilizado el procedimiento.
  • CMD: El nombre del comando que inició el procedimiento.

Usando el -F (formato extra completo) podemos obtener aún más columnas:

ps -eF | less

Las columnas que obtenemos esta vez requieren que la pantalla se desplace hacia los lados para revelarlas todas.

Al presionar la tecla «Flecha derecha», la pantalla se desplaza hacia la izquierda.

Las columnas que obtenemos ahora son:

  • UID: ID de usuario del propietario de este procedimiento.
  • PID: El ID de procedimiento del procedimiento.
  • PPID: ID del procedimiento principal del procedimiento.
  • C: La cantidad de hijos que tiene el procedimiento.
  • SZ: Tamaño en páginas RAM de la imagen del procedimiento.
  • RSS: Tamaño del conjunto residente. Esta es la memoria física no intercambiada utilizada por el procedimiento.
  • PSR: El procesador al que está asignado el procedimiento.
  • TIEMPO: Hora de inicio. El momento en que comenzó el procedimiento.
  • TTY: El nombre de la consola en la que el usuario inició sesión.
  • TIEMPO: La cantidad de tiempo de procesamiento de la CPU que ha utilizado el procedimiento.
  • CMD: El nombre del comando que inició el procedimiento.

Listado de procesos por ID de procedimiento

Una vez que haya encontrado el ID de procedimiento para el procedimiento que le interesa, puede usarlo con el ps comando para enumerar los detalles de ese procedimiento. Usar el -p (elegir por ID de procedimiento) opción para lograr esto:

ps -p 3403

Se enumeran los detalles de este procedimiento:

No está restringido a un ID de procedimiento. Puede proporcionar una lista de ID de procesos, separados por espacios.

Listado de procesos por comando

los -C La opción (comando) le posibilita buscar un procedimiento usando el nombre del comando. Dicho de otra forma, el nombre del comando que inició el procedimiento. Esto es sutilmente distinto de la línea de comando, que puede incluir nombres de ruta y parámetros u opciones.

ps -C shutter

Se enumeran los detalles del procedimiento del obturador.

Listado de procesos propiedad de un usuario

Para ver los procesos que son propiedad de un usuario en particular, use el -u (lista de usuarios) opción:

ps -u mary

Se muestran los procesos propiedad de la cuenta de usuario mary.

Listado de procesos por terminal

Para ver los procesos asociados con un TTY, use el -t (elegir por TTY) opción. Usado sin un número TTY, el -t La opción informa sobre los procesos asociados con la ventana de terminal actual.

tty
ps -t

los tty comando informa que esto es pseudo-teletipo 0. Los procesos enumerados por ps -t están todos asociados con TTY pts/0.

Si pasamos un número TTY en la línea de comando, deberíamos obtener un reporte de los procesos asociados con ese TTY.

ps -t 1

Esta vez todos los procesos están asociados con TTY pts/1.

RELACIONADO: ¿Qué es un TTY en Linux? (y cómo utilizar el comando tty)

Elegir columnas para mostrar

Con el -o (formato) puede elegir las columnas que desea incluir en la salida de ps. Las columnas se especifican por su nombre. La lista (larga) de nombres de columnas se puede ver en la página man en la sección titulada «Especificadores de formato estándar». En este ejemplo, elegimos tener el tiempo de la CPU (pcpu) y la línea de comando con argumentos (args) incluido en la salida.

ps -e -o pcpu,args | less

La salida solo incluye nuestras dos columnas solicitadas.

Ordenar la salida por columnas

Puede ordenar la salida por usted usando el --sort opción. Ordenemos la salida por la columna de la CPU:

ps -e -o pcpu,args --sort -pcpu| less

El guión «-» sobre el pcpu El parámetro de clasificación da un orden de clasificación descendente.

Para ver los diez procesos más intensivos en CPU, canalice la salida a través del head mando:

ps -e -o pcpu,args --sort -pcpu | head -10

Obtenemos una lista ordenada y truncada.

Si agregamos más columnas a nuestra pantalla, podemos ordenar por más columnas. Agreguemos el pmem columna. Este es el porcentaje de la memoria de la computadora que está siendo utilizada por el procedimiento. Sin guión o con más » +“, El orden de clasificación es ascendente.

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

Obtenemos nuestra columna adicional y la nueva columna se incluye en la clasificación. La primera columna se ordena antes que la segunda columna, y la segunda columna se ordena en orden ascendente debido a que no pusimos un guión en pmem.

Hagámoslo un poco más útil y agreguemos en la columna de ID de procedimiento (pid) para que podamos ver el número de procedimiento de cada procedimiento en nuestra lista.

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Ahora podemos identificar los procesos.

Salida de ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem |  cabeza 10

Matar procesos por ID de procedimiento

Hemos cubierto una gama de alternativas para identificar procesos, incluido el nombre, el comando, el usuario y la terminal. Además cubrimos alternativas para identificar procesos por sus atributos dinámicos, como el uso de CPU y la memoria.

Entonces, de una forma u otra, podemos identificar los procesos que se están ejecutando. Al conocer su ID de procedimiento, podemos (si es necesario) borrar cualquiera de esos procesos usando el kill mando. Si quisiéramos matar el procedimiento 898, usaríamos este formato:

sudo kill 898

Si todo va bien, el procedimiento finaliza silenciosamente.

RELACIONADO: Cómo matar procesos desde la terminal de Linux

Matar procesos por nombre

los pkill el comando te posibilita matar procesos por nombre. ¡Asegúrese de haber identificado el procedimiento correcto! Este comando terminará el procedimiento superior.

sudo pkill top

Una vez más, no tener noticias es una buena noticia. El procedimiento finaliza silenciosamente.

Matar múltiples procesos por nombre

Si tiene varias copias de un procedimiento en ejecución, o un procedimiento ha generado varios procesos secundarios (como puede hacer Google Chrome), ¿cómo puede eliminarlos? Eso es igual de fácil. Usamos el killall mando.

Tenemos dos copias de top running:

ps -e | grep top

Podemos terminar ambos con este comando:

sudo killall top

Si no hay respuesta, no hay problemas, por lo que ambos procesos han terminado.

salida de sudo killall top en una ventana termonal

Obtenga una vista dinámica con la parte de arriba

La salida de ps es una vista de instantánea. No se actualiza. Para obtener una vista actualizada de los procesos, utilice el top mando. Proporciona un vista dinámica de los procesos que se ejecutan en su computadora. La pantalla se divide en dos partes. Hay un área de tablero en la parte de arriba de la pantalla formada por líneas de texto y una tabla en la parte inferior de la pantalla formada por columnas.

Comienzo top con este comando:

top

Las columnas contienen información sobre los procesos:

  • PID: Identificacion de procedimiento
  • USUARIO: Nombre del titular del procedimiento
  • PR: Procedimiento prioritario
  • NI: El buen valor del procedimiento
  • VIRT: Memoria virtual utilizada por el procedimiento
  • RES: Memoria residente utilizada por el procedimiento
  • SHR: Memoria compartida utilizada por el procedimiento
  • S: Estado del procedimiento. Consulte la lista a continuación de los valores que puede tomar este campo
  • %UPC: el porcentaje de tiempo de CPU utilizado por el procedimiento desde la última actualización
  • % MEM: porcentaje de memoria física utilizada
  • TIEMPO +: tiempo total de CPU utilizado por la tarea en centésimas de segundo
  • MANDO: nombre del comando o línea de comando (nombre y parámetros de la línea de comando) Si no se puede ver la columna de comando, presione la tecla “Flecha derecha”.

El estado del procedimiento puede ser uno de los siguientes:

  • D: Sueño ininterrumpido
  • R: Corriendo
  • S: Dormido
  • T: Trazado (detenido)
  • Z: Zombi

Presione la tecla «Q» para salir de top.

RELACIONADO: 37 comandos importantes de Linux que debe conocer

Antes de matar un procedimiento

Asegúrese de que sea el que está buscando y verifique que no le cause ningún problema. En particular, es importante destacar consultar con el -H (jerarquía) y --forest opciones para asegurarse de que no tenga procesos secundarios importantes que haya olvidado.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.