lunes, 2 de diciembre de 2013

Manejando procesos en segundo plano (UNIX background jobs)

Les paso este mini tutorial para administrar los procesos en segundo plano, nunca sabes cuando lo vas a necesitar :p


1.- ) Ejecutando en segundo plano:
Por ejemplo, cuando ejecutas un comando "du" para obtener la lista de los directorios donde hay backups pesados en mi sistema, esto toma bastante tiempo en ejecutarse, pero tenemos la posibilidad de ejecutarlo en segundo plano directamente en la misma ejecución del comando agregando "&" al final:

#du -h /home | grep backup | grep [0-9]G >> /home/villatux/pesados1Dic2013.txt &

2.- ) Mandando el trabajo actual a segundo plano usando CTRL+Z y el comando bg:
Puedes mandar el trabajo que se está ejecutando a segundo plano con las siguientes instrucciones:
- Presionar "CTRL+Z"  que suspenderá la ejecución del comando
- Ejecutar "bg" para hacer que el comando suspendido continúe pero ahora en segundo plano

Por ejemplo si ya ejecute mi comando y se me olvidó ponerlo en segundo plano podemos hacerlo de la siguiente manera:

#du -h /home | grep backup | grep [0-9]G >> /home/villatux/pesados1Dic2013.txt

#[CTRL+Z]
[2]+  Stopped                 du -h /home | grep backup | grep [0-9]G >> /home/villatux/pesados1Dic2013.txt

#bg

3.- ) Tomar un trabajo del bacground y ponerlo en ejecución normal:
Podemos ver los trabajos en ejecución "background" con el comando "jobs" y con el comando "fg %1" obtiene el trabajo #1 y lo trae a un entorno de ejecución normal:

#jobs
[1]   Running                 bash miscript.sh &
[2]-  Running                 thunderbird &
[3]+  Done                    nautilus .

#fg %1

4.- ) Matar un trabajo especifico usando "kill %"
Si deseas matar un proceso en uso que está en background lo puedes hacer de la siguiente forma:

# kill %2


Espero les sea de utilidad.