La Terminal de Linux (V). Comandos para Listar y Finalizar Procesos

Muy buenas lector, en esta guía me voy a centrar en los procesos de Linux. En primera instancia, te contaré, por un lado, como puedes puedes listar los procesos ejecutándose en tu sistema, para ver aquellos que consumen más CPU o que están ocupando más memoria, etc. Por otro lado, te enseñaré como puedes detener o matar procesos concretos que puedan estar causando un mal funcionamiento de una aplicación, o incluso del entorno de escritorio completo.

Todo ello vamos a verlo a través de la terminal, ya que este post forma parte de una extensa serie de artículos dedicados a explotar el uso de la línea de comandos. Al final tienes enlazados el resto de posts de la serie. Espero que lo disfrutes.

Anuncios

Tabla de contenidos:

  1. Un poco sobre los procesos en Linux
  2. Como ver o listar los procesos activos
    1. Top
    2. Ps
    3. Pstree
  3. Como detener o matar procesos activos
    1. Pidof
    2. Kill
    3. Killall
    4. Pkill
  4. Acceder a las terminales TTY
  5. Para terminar

Un Poco Sobre los Procesos en Linux

Un proceso es, en palabras simples, una instancia o instancias de un programa en ejecución. Todos los procesos conforman una estructura en forma de árbol, de modo que tenemos procesos padre e hijo.

A grandes rasgos, todos ellos parten de init systemd, que es el primer proceso que se ejecuta en el arranque del sistema y del que nacen todos los demás.

Todos los procesos, como verás en los ejemplos, se identifican por un PID o Process ID, que suele ser un número que va cambiando cada vez que un proceso se finaliza y vuelve a iniciarse. De hecho, el único que tiene un PID fijo de 1 es init.

Por poco que hayas utilizado GNU/Linux, seguro que alguna vez has utilizado el monitor de sistema (muy similar al administrador de tareas de Windows). Allí tienes un listado de todos los procesos que corren bajo tu usuario, y puedes ver sus atributos, finalizarlos, etc.

Esta puede ser una manera muy válida de verlo, pero en la guía que nos ocupa me voy a centrar en hacerlo vía terminal, puesto que conocer los comandos te puede venir muy bien, como dije al principio, si tienes un problema con la sesión gráfica y te ves obligado a solventarlo desde la terminal TTY.

Comandos para Ver o Listar los Procesos Activos

Anuncios

Partiendo de que ya estamos a la terminal, te presento probablemente las que son las tres opciones más conocidas a la hora de listar los procesos activos del sistema.

Antes que nada, ten en cuenta que la mayoría de los comandos requerirán permisos de superusuario. Por ello, si estás en distribuciones como Ubuntu o Linux Mint, donde el usuario root está deshabilitado, deberás poner sudo delante de cada comando.

Si por contra, utilizas distribuciones como Debian, Fedora o OpenSuse, y dispones de root habilitado, entonces puedes ejecutar todos los comandos haciendo un su y poniendo a continuación la contraseña de superusuario.

$ su

Top

Esta es, posiblemente, la herramienta más conocida a la hora de mostrar información de los procesos en ejecución. Lo que hace es mostrarte una visión en tiempo real (se actualiza cada pocos segundos), del estado de tu sistema.

La opción más básica te mostrara un listado básico, junto con la información de algunos de sus atributos por columnas (PID, usuario propietario, nombre, etc.). Puedes desplazarte entre las diferentes filas por los controles del teclado, y teclear «q» para volver al modo normal y seguir utilizando la consola.

$ sudo top

Ps

La utilidad ps te muestra una foto con todos los procesos ejecutándose en tu sistema, junto con información de cada uno de ellos. Es un poco como top, pero sin actualizarse a tiempo real, es decir mostrando una foto estática del momento de su ejecución. Te presento algunas opciones de su uso a continuación.

En el primero caso, utilizando el -e verás un listado de todos los procesos y subprocesos junto con su ID (PID).

$ sudo ps -e

Combinando el parámetro -e con el parámetro -f, que viene de full-format listing, tendrás acceso al mismo listado anterior, pero esta vez con mucha más información de los atributos en columnas, incluyendo el ID del padre (PPID) y la ruta del ejecutable, entre otros.

$ sudo ps -ef

Pstree

Mediante el comando pstree, puedes ver la misma información que en los casos anteriores, pero representada en forma de árbol, identificando, de este modo, padres e hijos. Es una vista similar a lo que puedes llegar a ver con el monitor de procesos gráficos de GNOME.

$ sudo pstree

Como seguramente verás, todos parten de init, o de systemd en su defecto, como viene siendo la norma en las versiones más recientes de la mayoría de distribuciones.

A partir de ahí, se va ramificando en subprocesos e hilos. Los hilos los puedes reconocer porqué se muestran entre llaves ({}). Además, si un proceso contiene varias veces un hilo con el mismo nombre, este aparecerá también entre corchetes ([]) e indicando con un número las veces que se repite.

Chrome: Procesos y Hilos

Si tienes abierto Chrome/Chromium en el momento de pasar el comando, puedes ver ejemplificado esto ultimo que te comento. Cuando he hecho la captura de arriba, tenía tres pestañas abiertas, que se visualizan como tres subprocesos separados, cada uno de los cuales tiene diferentes threads o hilos.

Visto todo esto, ya es hora de que veas como finalizar o detener un proceso.

Comandos para Detener o Matar Procesos Activos

Pidof

Para conocer el PID de un determinado proceso, conociendo el nombre de este, puedes utilizar el comando pidof. (Aclaración: Antes había un error en el nombre de este comando, que ya ha sido corregido a fecha del 27/01/2017 gracias al comentario de Walter).

$ sudo pidof nombre-del-proceso

Kill

Mediante el comando kill, podrás matar un proceso en Linux conociendo su valor PID. Con la sintaxis básica, el comando se ejecutará enviando la señal SIGTERM, que es la que viene por defecto y ordena la salida correcta (dándole tiempo a que realice las acciones pertinentes de salida).

$ sudo kill PID-del-proceso

Si la linea anterior no ha hecho efecto, puedes optar por ejecutar el comando kill con la opción -9, la cual envía la señal SIGKILL, forzándolo a la salida en caso de que se resista, sin darle tiempo a realizar las acciones de salida.

$ sudo kill -9 PID-del-proceso

Killall

Con el comando killall podrás matar un proceso conociendo su nombre. Este comando solo es válido en Linux.

$ sudo killall nombre-del-proceso

Pkill

Otra opción similar es utilizar pkill, que te permitirá detener un proceso indicando solo algunos caracteres de su nombre.

Es un comando fácil de utilizar y que no requiere conocer el PID concreto. Sin embargo, hay un riesgo, y es que la señal se enviará a todos los procesos que tengan una correspondencia en nombre. Como más caracteres introduzcas, más ajustada sera la búsqueda.

$ sudo pkill carácteres-nombre-del-proceso

Acceder a las Terminales TTY

Como dije al principio bien no suele ser habitual (o no debería), en GNU/Linux también puede ocurrir que un mal funcionamiento en algún programa cree un bloqueo completo del entorno de escritorio.

En estos casos, no podremos utilizar la aplicación de terminal del escritorio, y el único salvavidas será poder contar con una de las terminales TTY. Puedes acceder directamente a la terminal TTY1 mediante la combinación de teclas ‘CTRL+ALT+F1’. Una vez allí, deberás loguearte con tu usuario antes de poder utilizar ningún comando. Tan solo pon el nombre y la password y listo.

Hace unos días publique una entrada en la que explicaba como reiniciar el servidor X en Ubuntu en caso de que se hubiese bloqueado la sesión gráfica. Esta puede ser otra vía para atacar el problema.

Consulta el Resto de Esta Serie

Antes de acabar, solo comentarte que esta guía forma parte de una serie de posts dedicada al manejo de la línea de comandos. Te dejo a continuación, a modo de resumen, los enlaces de cada uno de los posts de esta serie:

  1. La terminal de Linux. Primeros pasos
  2. Comandos para gestionar archivos y carpetas desde la terminal
  3. Consultar información del hardware y del sistema operativo
  4. Abrir y escanear el contenido de un fichero de texto desde la consola
  5. Comandos para listar y finalizar procesos activos
  6. Comandos para comparar ficheros de texto
  7. Comandos para la compresión y descompresión de ficheros
  8. Comandos para iniciar, detener o reiniciar servicios

Por otra parte, si acabas de empezar con GNU/Linux, te recomiendo que no dejes de echar un ojo en esta guía de introducción a Linux, y que te ayudará a situarte y a dar tu primeros pasos por las tierras de Tux.

Y en definitiva esto es todo hasta aquí. Espero que si has llegado hasta aquí realmente te haya sido útil la guía y hayas podido aplicar los pasos con éxito. Por contra, si tienes cualquier duda ya sabes que me tienes abajo en los comentarios:)

Categorías LinuxEtiquetas ,

7 comentarios en “La Terminal de Linux (V). Comandos para Listar y Finalizar Procesos

  1. Hola y Gracias por tus comentarios excelentes, solo te falto agregar como salir de la función sin matar la terminal y si estamos longueados mas aun de importante no?, gracias y feliz día del Amigo a todos los Linuxeros

    Me gusta

  2. Hola Yuri, gracias por compartir. La verdad es que resolví un problema con la información que encontré es esta página sin tener que reiniciar la pc. Saludos

    Me gusta

    1. Gracias a ti Oniel!!

      Me alegro de saberlo:)

      Me gusta

  3. Hola Yuri, excelente blog, recien lo estoy leyendo, te quiero comentar que hay un detalle en uno de los comando, colocaste «pidoff» y el comando es «pidof». Muchas gracias por estas horas de lectura y enseñanza que nos brindas.

    Me gusta

    1. Tienes toda la razón Walter, lo corrijo ahora mismo;)

      Muchísimas gracias por la aclaración.

      Saludos y me alegro mucho de que te sirva el blog!

      Me gusta

  4. Hola, agradezco mucho la información, poco a poco voy aprendiendo a usar Debian desde consola, todavía me falta saber como activar programas como un procesador de texto tipo openoffice o hojas de cálculo, visores de imágenes etc. He podido gracias a la ayuda de ustedes , navegar en la web sin inconvenientes desde consola , usar chats y ingresar en ordenadores de forma remota con ssh, todo esto vuelvo a repetir gracias a la generosidad de Ustedes. Saludos y felicitaciones!

    Me gusta

    1. Hola Aquilesrati,
      Me alegra enormemente saber esto!

      Saludos y muchísimas gracias por el comment!

      Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.