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

Gestió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. Por supuesto, es identificar el proceso en cuestión.

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

ps es lo suficientemente flexible como para brindarle la información que necesita exactamente en el formato que le gustaría. De hecho, ps tiene muchas opciones. Las opciones descritas aquí cubrirán las necesidades más comunes. Si necesita profundizar en ps de lo que lo hemos estudiado en este artículo, 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 usar ps es encenderlo sin parámetros:

ps

ps en una ventana de terminal

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

salida de ps en una ventana de terminal

Las cuatro columnas son:

PID: el número de identificación del proceso del proceso.
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 proceso.
CMD: el nombre del comando que inició el proceso

Proceso de listado para todos los usuarios

agregando la -e (seleccionar todos los procesos) podemos hacer que ps enumere los procesos que han sido iniciados por todos los usuarios, no solo por el usuario que está ejecutando el comando ps. Debido a que esta va a ser una lista larga, la estamos reduciendo a menos.

ps -e | less

ps -e |  menos en una ventana de terminal

La lista de procesos se canaliza a menos.

  Cómo jugar The Forest en Linux

La salida de ps -e canalizada a less en una ventana de terminal

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

Mostrar jerarquía de procesos

A veces, puede ayudar a resolver un problema o identificar un proceso en particular si puede ver qué procesos iniciaron otros procesos. Usamos la opción -H (jerarquía) para hacerlo.

ps -eH | less

ps -eH |  menos en una ventana de terminal

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

salida de ps -eH en menos en una ventana de terminal

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

ps -eH --forest | less

ps -eH --forest |  menos en una ventana de terminal

Esto facilita el seguimiento de los procesos que son padres de otros procesos.

salida de ps -eH: el bosque se canaliza a menos en una ventana de terminal

Listado de procesos por nombre

Puede canalizar la salida de ps a través de grep a las entradas de la lista 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

ps -e |  grep firefox en una ventana de terminal

En este caso, la salida es una entrada única para el proceso que nos interesa. Por supuesto, si hubiéramos lanzado varias instancias de Firefox, habría más de un elemento devuelto en la lista.

salida de ps -e |  grep firefox en una ventana de terminal

Mostrar más columnas en la salida

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

ps -ef | less

ps -ef |  menos en una ventana de terminal

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

salida de ps -ef |  menos en una ventana de terminal

Las columnas son:

UID: el ID de usuario del propietario de este proceso.
PID: el ID de proceso del proceso.
PPID: ID del proceso principal del proceso.
C: La cantidad de hijos que tiene el proceso.
STIME: Hora de inicio. El momento en que comenzó el proceso.
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 proceso.
CMD: el nombre del comando que inició el proceso.

Al usar la opción -F (formato extra completo) podemos obtener aún más columnas:

ps -eF | less

ps -eF |  menos en una ventana de terminal

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

salida de ps -eF |  menos en una ventana de terminal, lado izquierdo de la pantalla

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

salida de ps -eF |  menos en una ventana de terminal, lado derecho de la pantalla

Las columnas que obtenemos ahora son:

UID: el ID de usuario del propietario de este proceso.
PID: el ID de proceso del proceso.
PPID: ID del proceso principal del proceso.
C: La cantidad de hijos que tiene el proceso.
SZ: Tamaño en páginas RAM de la imagen del proceso.
RSS: Tamaño del conjunto residente. Esta es la memoria física no intercambiada utilizada por el proceso.
PSR: el procesador al que está asignado el proceso.
STIME: Hora de inicio. El momento en que comenzó el proceso.
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 proceso.
CMD: el nombre del comando que inició el proceso.

  Cómo jugar juegos de Sinclair ZX Spectrum en Linux

Listado de procesos por ID de proceso

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

ps -p 3403

ps -p 3403 en una ventana de terminal

Se enumeran los detalles de este proceso:

Salida de ps -p 3403 en una ventana de terminal

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

Listado de procesos por comando

La opción -C (comando) le permite buscar un proceso usando el nombre del comando. Es decir, el nombre del comando que inició el proceso. Esto es sutilmente diferente de la línea de comando, que puede incluir nombres de ruta y parámetros u opciones.

ps -C shutter

Contraventana ps -C en una ventana de terminal

Se enumeran los detalles del proceso del obturador.

Listado de procesos propiedad de un usuario

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

ps -u mary

ps -u mary en una ventana de terminal

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

Salida de ps -u mary en una ventana de terminal

Listado de procesos por terminal

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

tty
ps -t

ps -t en una ventana de terminal

El comando tty informa que se trata de un 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 informe de los procesos asociados con ese TTY.

ps -t 1

ps -t 1 en una ventana de terminal

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

Seleccionar columnas para mostrar

Con la opción -o (formato) puede seleccionar qué columnas desea incluir en la salida de ps. Las columnas se especifican por 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 CPU (pcpu) y la línea de comando con argumentos (args) incluidos en la salida.

ps -e -o pcpu,args | less

ps -e -o pcpu, argumentos |  menos en una ventana de terminal

La salida solo incluye nuestras dos columnas solicitadas.

salida de ps -e -o pcpu, args |  menos en una ventana de terminal

Ordenar la salida por columnas

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

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

ps -e -o pcpu, argumentos --sort -pcpu |  menos en una ventana de terminal

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

Salida de ps ordenada por cpu en una ventana de terminal

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

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

ps -e -o pcpu, argumentos --sort -pcpu |  cabeza 10 en una ventana de terminal

Obtenemos una lista ordenada y truncada.

salida de ps -e -o pcpu, args --sort -pcpu |  cabeza 10 en una ventana de terminal

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

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

ps -e -o pcpu, pmem, argumentos --sort -pcpu, pmem |  cabeza 10 en una ventana de terminal

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 porque no pusimos un guión en pmem.

  Cómo instalar el software de escritura de guiones Fade In en Linux

Salida de ps -e -o pcpu, pmem, args --sort -pcpu, pmem |  cabeza 10 en una ventana de terminal

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

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

ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem |  cabeza 10 en una ventana de terminal

Ahora podemos identificar los procesos.

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

Matar procesos por ID de proceso

Hemos cubierto una variedad de formas de identificar procesos, incluidos nombre, comando, usuario y terminal. También cubrimos formas de 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 proceso, podemos (si es necesario) matar cualquiera de esos procesos usando el comando kill. Si quisiéramos matar el proceso 898, usaríamos este formato:

sudo kill 898

sudo kill 898 en una ventana de terminal

Si todo va bien, el proceso finaliza silenciosamente.

salida de sudo kill 898 en una ventana de terminal

Matar procesos por nombre

El comando pkill te permite matar procesos por nombre. ¡Asegúrese de haber identificado el proceso correcto! Este comando terminará el proceso superior.

sudo pkill top

sudo pkill top en una ventana de terminal

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

salida de sudo pkill top en una ventana de terminal

Matar múltiples procesos por nombre

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

Tenemos dos copias de top running:

ps -e | grep top

ps -e |  grep top en una ventana de terminal

Podemos terminar ambos con este comando:

sudo killall top

sudo killall top en una ventana de terminal

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

salida de sudo killall top en una ventana termonal

Obtenga una vista dinámica con la parte superior

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

Comience arriba con este comando:

top

el comando superior que se ejecuta en una ventana de terminal

Las columnas contienen información sobre los procesos:

PID: ID de proceso
USUARIO: Nombre del titular del proceso
PR: prioridad del proceso
NI: El buen valor del proceso
VIRT: memoria virtual utilizada por el proceso
RES: memoria residente utilizada por el proceso
SHR: memoria compartida utilizada por el proceso
S: Estado del proceso. Consulte la lista a continuación de los valores que puede tomar este campo
% CPU: el porcentaje de tiempo de CPU utilizado por el proceso desde la última actualización
% MEM: porcentaje de memoria física utilizada
TIME +: tiempo total de CPU utilizado por la tarea en centésimas de segundo
COMANDO: 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 proceso puede ser uno de los siguientes:

D: sueño ininterrumpido
R: corriendo
S: durmiendo
T: rastreado (detenido)
Z: Zombi

Presione la tecla «Q» para salir desde arriba.

Antes de matar un proceso

Asegúrese de que sea el que está buscando y verifique que no le cause ningún problema. En particular, vale la pena verificar con las opciones -H (jerarquía) y –forest para asegurarse de que no tenga ningún proceso secundario importante que haya olvidado.