Gestión eficiente de tareas en Ubuntu Linux

nullTal y como “amenacé” a @Shakaran, creo que podría ser un buen momento para tratar algunos de esos temas de la consola que, cuando uno llega a Linux, tardan un tiempo en conocerse y que pueden resultar de gran utilidad en el manejo del día a día de la consola.

En esta ocasión he optado por explicar el funcionamiento de los procesos y cómo conseguir un mejor aprovechamiento tanto de nuestro tiempo como de los recursos del ordenador.

¿Qué veremos?

Vamos a centrarnos en la forma de enviar procesos a primer o segundo plano, entendiendo por ésto que reciban (o no) toda la atención del procesador de nuestro equipo.

Hace algún tiempo vimos cómo funcionaba el comando nohup y, de pasada, vimos cómo enviar un proceso a segundo plano añadiendo al final del comando un ampersand.

Puesta en antecedentes

Todos sabemos (y si no haced la prueba) que si lanzamos un programa desde la terminal como: Firefox, OpenOffice, K3B, … (cualquiera con interfaz gráfica para que se “vea” bien) y de repente cerramos la terminal dicho programa también desaparecerá de nuestro escritorio.

Para evitarlo, y como vimos en su momento, la mejor forma es añadir el ampersand al final de la línea como en el siguiente ejemplo

firefox &

¿Cómo suspender procesos lentos?

Si lanzamos un proceso que sabemos a ciencia cierta que va a tardar un rato (como copiar un archivo de 700MBs de un sitio a otro) y se nos olvida colocar el ampersand al final para recuperar el control de la terminal y seguir lanzando otros comandos tenemos la opción de suspenderlo pulsando la combinación de teclas

ctrl+z

Listar procesos en ejecución

Para conocer en un momento dado cuántos procesos tenemos en segundo plano no tenemos más que lanzar desde la terminal el comando jobs

En la imagen puede observarse

  • que tengo cuatro procesos suspendidos (Stopped)
  • que el proceso 2 fue el último utilizado (se sabe por el signo +)
  • y que el proceso 4 fue el penúltimo utilizado (por el signo -)

Diferencias entre primer y segundo plano

Un proceso en primer plano es aquel que tiene el control absoluto de la terminal de modo que puede interactuar con el usuario ofreciendo información por pantalla (mensajes de texto) a éste y solicitándole datos para poder continuar su ejecución.

Los procesos en segundo plano no pueden interactuar con el usuario pero siguen trabajando mientras no sea necesaria información por parte de éste.

¿Cómo enviar procesos a primer o segundo plano?

Para poder hacer esto no tenemos más que ejecutar en la terminal los comandos

  • fg (foreground) para traer un proceso a primer plano
  • bg (background) para enviarlo a segundo plano

En ambos casos puede indicarse (es opcional) el número del proceso que deseamos cambiar de plano y que se corresponde con el que se obtiene al ejecutar el comando jobs que hemos visto anteriormente.

No obstante, siempre sabemos el número de cada proceso pues se van numerando de 1 a N conforme vamos suspendiendo procesos (el primero es el 1, el segundo el 2, … 🙂 ) por lo que si son pocos no hace falta lanzar el comando jobs.

NOTA: si se utilizan los comandos fg o bg sin indicar número de proceso, se tomará por defecto el último que hayamos utilizado (el que está marcado con un signo + a su derecha como es el caso del 2 del ejemplo anterior)

Supongamos que queremos enviar a segundo plano el proceso 3, para ello lanzaremos un

bg 3

el resultado de lanzar un jobs sería

Observa que el estado del proceso 3 es Running en lugar de Stopped, este mensaje nos indica que está ejecutándose en segundo plano mientras que los demás están parados esperando que hagamos algo con ellos.

Eliminar procesos

La forma lenta

Podemos pasarlo a primer plano con el comando fg y luego pulsar la combinación de teclas CTRL+C que permite terminar una tarea.

La forma “rápida”

Como ocurre con cualquier otro proceso la forma de eliminarlos es utilizando el comando kill, la única diferencia es que debemos escribirlo como

kill %N

donde

  • %N es el número del proceso

Sirva de ejemplo

kill %3

para eliminar el proceso 3 de nuestra lista de procesos.

Observa que el estado del proceso 3 ha pasado a ser Terminado (ole el spanglish y las traducciones a “medio gas”)

Conclusión

Con este artículo ya deberías tener las nociones necesarias para manejar convenientemente los procesos en Linux; a modo de resumen los comandos vistos son

  • fg para traer un proceso a primer plano
  • bg para enviarlo a segundo plano
  • jobs para listar los procesos
  • kill %N para eliminar el proceso N
  • ctrl+z para suspender el proceso actualmente en ejecución
  • ctrl+c para finalizar la tarea en primer plano

6 comentarios en “Gestión eficiente de tareas en Ubuntu Linux

  1. Ado Ello dijo:

    Gracias por estos comandos. Mi amigo que entiende de servidores se sabe estos comandos y creo que otros mas, pero nunca me enseña. Asi que con esta entrada intentare hacerle frente jejeje.

    Un saludo, y que sepas que tengo tu blog en mis RSS 😉

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