Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
&
^Z
suspend
Suspende el Shell
fg
bg
Trabajos (jobs)
El comando jobs lista las tareas en ejecucin en el Shell actual.
fraterneo@rainbow:~$ jobs
[1]- Running
[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
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
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
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:
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.