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

Aunque se trata de un problema más típico entre los usuarios de Windows, también es típico que en Ubuntu existan personas que se resistan 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 14.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

El comando ps permite obtener una instantánea de los procesos que se estan ejecutando en estos momentos en el sistema.

Aunque el comando ps dispone de un conjunto bastante elevado de argumentos que nos permitirán ajustar su comportamiento de una forma muy detallada, 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).

1

El comando produce esta salida.

El resultado que obtengamos 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

Si estás buscando información sobre un proceso en particular, siempre puedes filtrar la salida de ps utilizando el comando grep:

ps aux | grep 'gedit'

2

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

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

1

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

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

2

Sólo vemos los procesos del usuario elegido.

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 2596. Para detenerlo, escribiríamos lo siguiente:

kill 2596

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

kill -TERM 2596
kill -15 2596

1

Al pulsar Intro, el programa se cierra.

En cualquier caso, cuando usamos el comando kill de esta forma, trata de cerrar el proceso de una forma ordenada, para 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 3392
kill -9 3392

2

Como cabe esperar, el PID ha cambiado, porque se trata de una nueva instancia de gEdit.

La gran ventana 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

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

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.

1

Al pulsar la tecla Intro, se cerrarán todas las instancias de gEdit.

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.

1

Acabaremos con todos los procesos que contengan en su nombre el texto ‘ged

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.

One more thing…

De todas formas, si eres de los que no acaban de acostumbrarse al modo texto, recuerda que ya hemos publicado un artículo para Finalizar programas o servicios que no responden en Ubuntu 14.04 LTS en la interfaz gráfica.