Está en la página 1de 7

Entendiendo el Shell - Post extra (apa)

Bueno, realmente el Shell Bash tiene muchsimas opciones y caractersticas y a medida que se profundiza en ellas ms interesantes se vuelven. Les traigo este post de apa con funciones del Shell que quizs no conocas: El Shell tiene control de trabajos: La habilidad para ejecutar comandos en segundo y en primer plano. Un trabajo es uno o varios comandos que ocupan al Shell en un momento determinado. Cuando ejecutamos un comando interactivo, el Shell actual lo trata como un trabajo. Una vez el comando es completado, el trabajo asociado desaparece. Los trabajos tareas estn a un nivel ms alto que los procesos en Linux; el sistema operativo no sabe nada acerca de ellos. Los trabajos son construidos propiamente por el Shell. Terminologas comunes son: Trabajo en primer plano: Es un trabajo que el Shell est haciendo y ocupa el prompt del mismo, por lo que no podemos hacer otra cosa hasta que termine. Trabajo en segundo plano: Es un trabajo que corre en segundo plano, por lo que podemos usar el Shell para otro comando. Suspender: Detener un trabajo en primer plano de forma temporal. Reanudar: Hacer que un trabajo suspendido vuelva a ejecutarse.

Los comandos internos de Bash asociados con los trabajos en segundo plano son los siguientes:
jobs Lista los trabajos del Shell

&

Ejecuta un trabajo en segundo plano

^Z

Suspende un trabajo en segundo plano

suspend

Suspende el Shell

fg

Reanuda un trabajo, trayndolo al primer plano

bg

Hace que un trabajo suspendido corra en segundo plano

Trabajos (jobs)
El comando jobs lista las tareas en ejecucin en el Shell actual.

fraterneo@rainbow:~$ jobs

[1]- Running

nano archivo1.txt &

[2]+ Stopped

su

El numero a la izquierda es el nombre de la tarea y el signo + identifica el trabajo afectado por los comandos primer plano (fg) y segundo plano (bg).

&
Cuando lo ubicamos al final de un comando, el ampersand causa que el comando en cuestin se ejecute como un trabajo en segundo plano.
fraterneo@rainbow:~$ nano archivo1.txt &

[2] 28095

El Shell nos indica el numero del trabajo (2) y el ID del proceso del comando (28095).

^Z
El teclear la combinacin Ctr+Z, cuando un trabajo est en ejecucin en primer plano, se suspender dicho trabajo. Solo se detiene su ejecucin pero su estado es recordado.
fraterneo@rainbow:~$ mtr google.com.do

^Z

[1]+ Stopped mtr google.com.do

fraterneo@rainbow:~$

Ahora estamos listos para ejecutar el comando bg para enviar ese trabajo al segundo plano, o fg para regresarlo al primer plano o reanudarlo.

suspend
El comando interno suspend suspende el Shell actual siempre que sea posible, y es como si le enviramos un ^Z a Bash mismo. Por ejemplo, su ejecutamos el comando su y queremos regresar al Shell de nuestro usuario:

fraterneo@rainbow:~$ whoami

fraterneo

fraterneo@rainbow:~$ su -

Password:

root@rainbow:~# whoami

root

root@rainbow:~# suspend

[1]+ Stopped

su

fraterneo@rainbow:~$ whoami

fraterneo

bg
El comando bg enva un trabajo suspendido a ejecutarse en el segundo plano. Sin argumentos, bg opera en el trabajo suspendido mas reciente. Para especificar un trabajo particular (como los muestra el comando jobs), debemos suplirle el numero del trabajo precedido por el signo %.
fraterneo@rainbow:~$ bg %2

Algunos tipos de trabajos interactivos no pueden permanecer en el segundo plano, por ejemplo, si est esperando por una entrada de datos. Si lo intentamos, el Shell suspender el trabajo y mostrara lo siguiente: [2]+ Stopped comando. Ahora puedes reanudar el trabajo (con fg) y continuar.

fg
El comando fg trae un trabajo suspendido o en segundo plano hacia el primer plano. Sin argumentos, fg selecciona el trabajo suspendido o enviado a segundo plano ms reciente. Para especificar un trabajo

particular, igual que en el caso del comando bg, debemos suplirle el numero del trabajo precedido del signo %.
fraterneo@rainbow:~$ fg %3

Terminando un comando en progreso (^C)


Si hemos ejecutado un comando en el Shell en primer plano, y queremos terminar o matar dicho comando, usaremos la combinacin Ctr+C. El Shell reconoce esto como term ina el comando actual en primer plano ahora. Para terminar un programa en ejecucin en segundo plano, podemos traerlo al primer plano con fg y luego terminarlo con ^C o usar el comando kill PID para tal fin. Aunque ^C no siempre es la mejor forma de hacer esto, ya que muchos comandos particulares tienen su propia forma de ser terminados, y es recomendable hacerlo a su manera. Otro asunto es que ^C puede provocar una reaccin desagradable del Shell y hacer que no responda a las entradas del teclado, debido a que el comando terminado no tiene tiempo de limpiar su salida. Si esto pasa podemos solucionarlo as: Con ^J (Ctrl+J) para conseguir el prompt del Shell. Esto produce el mismo resultado que presionar Enter (una nueva lnea) pero funcionar aun cuando Enter no lo haga. Debemos tomar en cuenta que muchos comandos o programas como emacs estn programados para ignorar ^C y otras combinaciones de teclas.

Terminando un Shell (exit)


Para terminar o cerrar un Shell lo haremos con el comando exit o con ^D (Ctrl+D). Esta combinacin enva al Shell la seal EOF (End Of File), lo que hace que el mismo termine.

Artculos relacionados
/shell /Linux Pero pap, usa GNU/Linux! Cmo configurar un servidor de streaming con Icecast Gestores de Paquetes: RPM y YUM Gestores de Paquetes: Los paquetes DEB Gestores de Paquetes: APT Gua Samba4 como Controlador de Dominio (ebook) Disponible el Kernel Linux 3.7 Cmo configurar un Controlador de Dominio con CentOS, Samba4, Kerberos y BIND Entendiendo el Shell - Post extra (apa) Entendiendo el Shell - Parte 5 (Final) Entendiendo el Shell - Parte 4 Entendiendo el Shell - Parte 3 Entendiendo el Shell - Parte 2 Entendiendo el Shell - Parte 1 Diferencia entre terminal, shell, tty y consola

/Bash Entendiendo el comando touch Entendiendo el Shell - Post extra (apa) Entendiendo el Shell - Parte 5 (Final) Entendiendo el Shell - Parte 4 Entendiendo el Shell - Parte 3 Entendiendo el Shell - Parte 2 Entendiendo el Shell - Parte 1 Entendiendo el comando compgen

Widget by Hoctro | Jack Book

TITULO:Procesamiento en segundo plano, suspencin y control de procesos

Por lo general cuando ejecutamos un comando esperamos a que termine para seguir con el prximo. Pero, supongamos que el comando que ejecutamos podra tardar bastante tiempo (tal vez es una operacin de bsqueda, o est copiando un archivo muy pesado), la solucin inmediata sera abrir otra terminal y seguir trabajando no?

Bien, pues existe una forma ms elegante de hacer las cosas, y es utilizando la naturaleza multitarea de Linux. Es posible ejecutar un comando en segundo plano con el carcter especial &. Por ejemplo, deseo crear una lista ORDENADA de los archivos con la extensin *.so que hay en mi computador, entonces hara 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 nmero 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 ests cagando, lo ms probable es que ya no puedas hacer nada (condenado ests). Pero Linux es ms 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 ests casado y quieres tomarte un descanso, conocer ms gente (mujeres) y dejar suspendido el matrimonio un rato, pues te jodes porque tu mujer de seguro no te deja. Linux piensa ms en ti que tu mujer, si ests 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 despus viene la separacin de bienes, la demanda por alimentos, y tu mujer te deja en la calle. De nuevo, Linux piensa ms en ti y aunque lo utilices eres ms 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 estn ejecutando en segundo plano puedes utilizar el comando jobs. La siguiente imagen muestra el comportamiento de una sesin de ejemplo, en la que se utilizan los comandos mencionados anteriormente.

También podría gustarte