Administrar procesos desde la línea de comandos de Ubuntu 18.04 LTS

Publicado por P. Ruiz en

Aunque se trata de un problema más típico entre los usuarios de Windows, también existen en Ubuntu usuarios que se resisten a utilizar la línea de comandos. Sin embargo, en muchas ocasiones es un medio muy útil para obtener la información que necesitamos sin depender de las limitaciones que imponga la interfaz gráfica.

Por ese motivo, hoy vamos a demostrar lo fácil que resulta obtener la lista de procesos y servicios que se están ejecutando en un ordenador con Ubuntu 18.04 LTS y cómo detenerlos fácilmente, cuando sea necesario.

Para conseguirlo, aprenderemos el uso básico de algunos comandos del modo texto: pstop, kill, killall, pkill y xkill.

El comando ps

Puedes abrir la ventana de terminal usando la combinación de teclas Alt + Control + T.

En su forma más básica, el comando ps (cuyo nombre proviene de process state) ofrece una lista de los procesos que la cuenta de usuario actual esté ejecutando en estos momentos.

Para comprobarlo, basta con abrir una nueva ventana de terminal y escribir el comando:

En la imagen siguiente comprobamos que sólo aparecen dos procesos: El intérprete de comandos bash, que es el que nos permite escribir órdenes en la terminal, y el propio comando ps.

ps

Salida del comando ps sin argumentos.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-001

Sin embargo, el comando ps dispone de un conjunto bastante elevado de argumentos que nos permitirán ajustar su comportamiento de una forma muy detallada, aunque existe una combinación que se usa de forma muy frecuente. Me refiero a esta:

ps aux

Básicamente, estamos indicando a ps que añada los procesos de otros usuarios (a), que utilice un formato fácilmente legible por el usuario (u) y que se incluyan los procesos que no tengan asociado un dispositivo de salida (x).

El comando produce esta salida.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-002

Si analizamos la imagen anterior, comprobaremos que el resultado obtenido contiene la siguiente información:

  • El usuario que ha iniciado el proceso
  • El identificador del proceso (PID)
  • El porcentaje de tiempo que el proceso ha estado usando el procesador desde su inicio.
  • El porcentaje de memoria RAM que está utilizando
  • La cantidad de memoria virtual (VSZ) que está usando, medida en KB.
  • La cantidad de memoria residente (RSS), es decir, no afectada por los mecanismos de intercambio, medida en KB.
  • La terminal que está usando el proceso
  • El estado en el que se encuentra (STAT). Se trata de un código formado por varios caracteres cuyo significado explicaremos más abajo.
  • La fecha o la hora en la que se inició el proceso.
  • El tiempo que ha estado usando el procesador
  • La sintaxis completa, con argumentos incluidos, que se usó para ejecutarlo.

En cuanto a los caracteres que informan sobre el estado del proceso, podemos encontrarnos con los siguientes:

Información de estado

Aunque, si estás buscando información sobre un proceso en particular, también puedes filtrar la salida de ps utilizando el comando grep. Por ejemplo para obtener los procesos asociados al editor de textos gEdit, siempre que éste se esté ejecutando, podremos escribir lo siguiente:

ps aux | grep 'gedit'

Observa que aparecen los líneas: la de gedit y la del propio comando ps, que también contiene el texto ‘gedit‘.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-003

En cualquier caso, ten en cuenta que sólo hemos utilizado la sintaxis más frecuente, pero que el comando ps dispone de un amplio abanico de argumentos y opciones que te pueden permitir un control muy detallado de los procesos que se están ejecutando.

Si necesitas más detalles, puedes recurrir a la página de documentación de Ubuntu: http://manpages.ubuntu.com/manpages/trusty/es/man1/ps.1.html

El comando top

El comando top viene incorporado en la mayoría de las distribuciones y ofrece información sobre el grado de ocupación de la CPU, de la memoria RAM, de la memoria de intercambio (swap) y los procesos que se están ejecutando.

Para ejecutarlo, bastará con escribir la orden top en una ventana de Terminal.

Los datos visualizados irán actualizándose cada pocos instantes.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-004

Aparentemente, con top somos meros espectadores, pero no es del todo cierto. Por ejemplo, podremos finalizar la ejecución de cualquier proceso pulsando la tecla k y escribiendo el PID del proceso.

Para salir del comando top, sólo hay que pulsar la tecla q.

Pulsando la tecla u y escribiendo un nombre de usuario, se mostrarán únicamente los procesos iniciados por dicho usuario. Para volver a verlos todos, sólo tenemos que volver a pulsar la tecla u y pulsar Intro.

Si, desde el principio, estamos interesados sólo en los procesos de un usuario particular, podemos iniciar top con el argumento -u seguido del nombre del usuario.

top -u usuario

Sólo vemos los procesos del usuario elegido.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-005
Si necesitas más detalles, puedes recurrir a la página de documentación de Ubuntu: http://manpages.ubuntu.com/manpages/trusty/man1/top.1.html

El comando kill

Ya hemos visto que el comando top es capaz de detener un proceso que se esté ejecutando. Sin embargo, si ya hemos utilizado el comando ps y conocemos el PID del proceso que queremos detener, hay una forma más directa: el comando kill.

Para ello, sólo tenemos que escribir el comando, seguido del PID del proceso. Por ejemplo, supongamos que el programa gEdit se está ejecutando con el PID 2998. Para detenerlo, escribiríamos lo siguiente:

kill 2998

Al pulsar Intro, el programa se cierra.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-006

Hay dos formas más de conseguir exactamente los mismos resultados:

kill -TERM 2998
kill -15 2998

En cualquiera de los casos, cuando usamos el comando kill con alguna de estas sintáxis, trata de cerrar el proceso ordenadamente, tratando de evitar que se pierdan datos. Esto hace que el cierre pueda no ser inmediato.

No obstante, si el proceso no responde, podemos realizar un cierre incondicional escribiendo alguno de estos comandos:

kill -KILL 2998
kill -9 2998

En cualquier caso, la gran ventaja que ofrece el comando kill es, precisamente, que permite afinar mucho el modo en el que se termina un proceso. Para ello, además de las opciones -TERM, -15, -KILL, -9, existen bastantes otras. En la siguiente tabla te incluimos las más frecuentes:

Señales

Aunque, si quieres obtener un listado completo, siempre puedes recurrir al comando:

kill -l

Con lo que obtendremos la lista completa de opciones para kill.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-014

Y, si necesitas más detalles, puedes recurrir a la página de documentación de Ubuntu: http://manpages.ubuntu.com/manpages/trusty/man1/kill.1.html

Existe una variante del comando kill que se encuentra a caballo entre el modo texto y la interfaz gráfica. Me refiero a, comando xkill.

Para usarlo, sólo tienes que escribirlo en la ventana de terminal, sin argumentos, y pulsar la tecla Intro. Al hacerlo, el puntero del ratón tomará aspecto de una equis ().

Y aparece un texto explicativo indicando que debemos hacer clic sobre la ventana que deseemos cerrar.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-009

Al hacerlo, el proceso responsable de mostrar la ventana finalizará y, por consiguiente, la ventana desaparecerá.

También concluirá la ejecución del comando.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-010

El comando killall

Este comando ofrece dos diferencias importantes con respecto a kill:

  • La primera es que podemos eliminar un proceso haciendo referencia a su nombre.
  • La segunda es que, si existen varias instancias del mismo programa (por ejemplo, varios documentos abiertos con LibreOffice Writer), podemos cerrarlos todos en una sola acción.

Para comprobar su funcionamiento, ejecutamos el navegador web firefox y, usando el comando grep como hemos aprendido más arriba, comprobamos que su ejecución se emplea diferentes procesos.

De este modo, si necesitáramos detenerlos todos la mismo tiempo, bastaría con ejecutar el siguiente comando:

killall firefox

Al pulsar la tecla Intro, se cerrarán todos los procesos de todas las instancias que estemos ejecutando de firefox.

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-007

Por cierto, con killall podemos utilizar las mismas señales que con el comando kill.

Si necesitas más detalles, puedes recurrir a la página de documentación de Ubuntu: http://manpages.ubuntu.com/manpages/trusty/man1/killall.1.html

El comando pkill

Para terminar este repaso por los comandos que permiten detener procesos en GNU/Linux, es necesario hacer referencia a pkill. Este comando permite, como killall detener procesos en función de su nombre, pero, a diferencia de éste, con pkill podemos indicar sólo una parte de dicho nombre. Además, puedes usar la tecla de tabulación para autocompletar el nombre del proceso.

De este modo, podemos aplicar la misma estratégia del punto anterior, pero usando el siguiente comando:

pkill fire

Al hacerlo, acabaremos con todos los procesos que contengan en su nombre el texto ‘fire‘

Administrar-procesos-desde-la-linea-de-comandos-de-Ubuntu-18-04-LTS-008

Lógicamente, deberemos tener cuidado, porque cerraremos cualquier proceso que contenga en su nombre el texto que hayamos escrito.

Si necesitas más detalles, puedes recurrir a la página de documentación de Ubuntu: http://manpages.ubuntu.com/manpages/trusty/man1/pkill.1.html

Bueno, pues hasta aquí el repaso de hoy a los comandos básicos que nos permiten consultar y detener procesos en GNU/Linux. Espero que te resulte útil.