gentoo linux, java, software libre y otras hierbas
Feb, 11 2007 - 7:57 pm

Procesamiento en segundo plano

TITULO:Procesamiento en segundo plano, suspención y control de procesos

Por lo general cuando ejecutamos un comando esperamos a que termine para seguir con el próximo. Pero, supongamos que el comando que ejecutamos podría tardar bastante tiempo (tal vez es una operación de búsqueda, o está copiando un archivo muy pesado), la solución inmediata sería abrir otra terminal y seguir trabajando ¿no?

Bien, pues existe una forma más “elegante” de hacer las cosas, y es utilizando la naturaleza multitarea de Linux. Es posible ejecutar un comando en segundo plano con el carácter especial “&”. Por ejemplo, deseo crear una lista ORDENADA de los archivos con la extensión *.so que hay en mi computador, entonces haría algo como esto:

debianita:/# find . -name ‘*.so’ -print | sort >ListaOrdenada &
[1] 4647
debianita:/#

El shell imprime “[1] 4647″ y regresa inmediatamente, es decir, la shell queda lista para recibir comandos de nuevo. La salida indica que se está ejecutando una tarea en segundo plano, y que el PID (identificador de proceso) es 4647. En este caso el proceso es el número 1 en la cola de procesamiento en segundo plano.

Si se ejecuta un proceso sin el comando & el shell espera a que dicha tarea termine antes de pedirte un nuevo comando. En ese caso se dice que la tarea se está ejecutando en primer plano.

Si te vas a casar y en plena boda te das cuenta de que la estás cagando, lo más probable es que ya no puedas hacer nada (condenado estás). Pero Linux es más flexible que el matrimonio, si has ejecutado un comando en segundo plano y te arrepientes puedes traerlo (desde el mundo espectral) “al primer plano” con el comando fg.

Si ya estás casado y quieres tomarte un descanso, conocer más gente (mujeres) y dejar suspendido el matrimonio un rato, pues te jodes porque tu mujer de seguro no te deja. Linux piensa más en ti que tu mujer, si estás ejecutando un comando en primer plano puedes suspenderlo, sin eliminarlo completamente. Para ello debes oprimir “Ctrl+Z”, con lo cual el proceso quedará suspendido:

debianita:/# find . -name ‘*.so’ -print | sort > ListaOrdenada

[1]+ Stopped find . -name ‘*.so’ -print | sort >ListaOrdenada
debianita:/#

Puedes “descongelar” el proceso y traerlo al primer plano con el comando fg, o descongelarlo pero dejarlo en segundo plano con el comando bg. Umm, si el matrimonio fuera como Linux… en fin.

Ahora, por último si quieres acabar con el matrimonio recurres al divorcio, pero después viene la separación de bienes, la demanda por alimentos, y tu mujer te deja en la calle. De nuevo, Linux piensa más en ti y aunque lo utilices eres más libre que “unas monjitas fujitivas”. Si deseas eliminar un proceso completamente puedes utilizar el comando kill, indicando el PID del proceso (kill 4647), o por su lugar en la cola de procesamiento en segundo plano (kill %1).

Si deseas saber que tareas se están ejecutando en segundo plano puedes utilizar el comando jobs. La siguiente imagen muestra el comportamiento de una sesión de ejemplo, en la que se utilizan los comandos mencionados anteriormente.

No hay etiquetas para esta entrada.

4 Comentarios | deja el tuyo

Un enlace entrante

3 Comentarios en “Procesamiento en segundo plano”

  1. Daniel dice:

    Why linux is so nerd?
    When is it gonna be a human (normal) usable linux?
    (please!, don’t say Ubutu!)

    • Cristian dice:

      Ummm, well, actually I like Linux as it is. I love my fucking freak Linux I don’t care if the normal people cannot use it, that’s their problem not mine.

      Bye, thanks for the comments.

  2. Nuwanda dice:

    Pobre Daniel.
    Se cumple el refrán: “la única defensa del ignorante es el ataque”.
    Gracias por tus post. Me han servido mucho.

¡Déjanos tu comentario!