Finalizar Procesos en Linux desde la Línea de Comandos

Como Listar y Finalizar Procesos en Linux desde la Línea de Comandos (Actualizado)

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, que si bien no es algo muy habitual, puede pasar. Todo ello vamos a verlo vía terminal.

En este post verás:

  1. Un poco sobre los procesos en Linux
  2. Como ver o listar los procesos activos
  3. Como detener o matar procesos activos
  4. Acceder a las terminales TTY en caso de bloqueo de la sesión gráfica
  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

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, entonces puedes ejecutar todos los comandos con los permisos de root 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 en Caso de Bloqueo de la Sesión Gráfica

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.

Ultimas Consideraciones

Antes de acabar, solo comentarte que esta guía forma parte de una serie de posts dedicada al manejo de la terminal de Linux que puedes consultar en este mismo enlace.

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:)

Anuncios

Publicado por

Oriol

Soy un chico de Barcelona. Estoy aquí para compartir mis Hobbies e intentar aportar mi granito de arena a todos aquellos usuarios interesados en el mundo de la informática, internet y las tecnologías de la información en general.

6 comentarios sobre “Como Listar y Finalizar Procesos en Linux desde la Línea de Comandos (Actualizado)”

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

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

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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s