Mandrake Linux 8.1: Manual de Referencia | ||
---|---|---|
Anterior | Capítulo 3. Introducción a la línea de comandos | Siguiente |
Ud. debe haber notado que cuando ingresa un comando desde una Terminal, normalmente tiene que esperar a que el comando termine antes que el shell le devuelva el control. Esto significa que Ud. envió el comando en primer plano. Sin embargo, hay ocasiones donde esto no es deseable.
Suponga, por ejemplo, que Ud. decidió copiar recursivamente un directorio grande a otro. Ud. también decidió ignorar los errores, por lo que redirecciona el canal de error a /dev/null:
cp -R imagenes/ /shared/ 2>/dev/null |
Un comando como este puede tardar varios minutos para terminar. Entonces, Ud. tiene dos soluciones: la primera es violenta y significa terminar el comando y volver a hacerlo más tarde cuando tenga el tiempo. Para hacer esto, ingrese Ctrl+c: esto le devolverá el prompt. Pero espere, ¡no lo haga! Siga leyendo.
Suponga que Ud. quiere ejecutar el comando mientras hace otra cosa al mismo tiempo. Entonces, la solución es poner al proceso en segundo plano. Para hacer esto, ingrese Ctrl+z para suspender al proceso:
$ cp -R images/ /shared/ 2>/dev/null # Presione C-z [1]+ Stopped cp -R images/ /shared/ 2>/dev/null $ |
y aquí está, de nuevo en el prompt. El proceso está entonces suspendido, esperando que Ud. lo vuelva a iniciar (como muestra la palabra clave Stopped, detenido). Eso, por supuesto, es lo que Ud. quiere hacer, pero en segundo plano. Ingrese bg (por BackGround, segundo plano) para obtener el resultado deseado:
$ bg [1]+ cp -R images/ /shared/ 2>/dev/null & $ |
Entonces, el proceso comenzará a ejecutar nuevamente como una tarea en segundo plano, como lo indica el signo & (ampersand) al final de la línea. Ud. volverá al prompt y podrá continuar trabajando. Un proceso que corre como tarea en el fondo, o en segundo plano, se denomina job.
Por supuesto, Ud. puede iniciar procesos directamente como tareas en segundo plano, precisamente agregando un caracter & al final del comando. Por ejemplo, Ud. puede iniciar el comando para copiar el directorio en segundo plano escribiendo:
cp -R imagenes/ /shared/ 2>/dev/null & |
Si Ud. lo desea, también puede volver este proceso a un primer plano y esperar a que termine ingresando fg (ForeGround, primer plano). Para volverlo al segundo plano, ingrese la secuencia Ctrl+z, bg.
Ud. puede iniciar varios jobs de esta forma: entonces, se asignará un número de job a cada comando. El comando jobs del shell lista todos los jobs asociados al shell corriente. El job precedido por un signo + indica el último proceso iniciado como tarea de segundo plano. Para pasar a un job en particular al primer plano, Ud. puede ingresar fg <n> donde <n> es el número de job, por ejemplo, fg 5.
Note que Ud. también puede suspender o lanzar aplicaciones de pantalla completa (si es que están programadas correctamente) de esta forma, tales como less o un editor de texto como Vi, y pasarlos al primer plano cuando Ud. lo desee.