Bash Scripting, nohup y procesos en segundo plano
Estos dos comandos vienen bastante ligados uno con el otro, si bien no hace falta usarlos a la vez se complementan mutuamente.
Comando nohup
En primer lugar tenemos nohup, es extremadamente útil en casos en los que como es habitual nos conectamos por conexión ssh a un host, si vamos a ejecutar un script que tarde un tiempo bastante respetable, o por el contrario no podemos correr el riesgo de que nos falle la red por diversos motivos y al finalizarse la conexión ssh, finalice los procesos que teníamos ligados a ella mandando la señal HUP de ahí el su nombre. El uso sería tan sencillo como esto:
m3t4g4m3@nexolinux ~ $ nohup sh script.sh
Además de esto, nos proporciona un fichero de log de la ejecución, el nohup.out en la ruta donde lo ejecutemos, y como somos conscientes de lo valiosa que puede ser información así sobre todo en tareas que requieran horas para saber el porqué puede haber fallado o ver si se puede mejorar.
Procesos en segundo plano.
En casos como el anterior que nos dejaría la shell de esta forma:
m3t4g4m3@nexolinux ~ $ nohup sh script.sh nohup: ignoring input and appending output to `nohup.out'
Para evitar perder la consola en la que estamos logueados y tener que abrir otra, pasaremos el proceso a segundo plano, con lo que nos la dejará libre para poder seguir haciendo tareas.
Este es un ejemplo completito del uso de procesos en segundo plano:
m3t4g4m3@nexolinux ~ $ nohup script.sh & [1] 2831 m3t4g4m3@nexolinux ~ $
m3t4g4m3@nexolinux ~ $ bg [1]+ nohup sh script.sh & m3t4g4m3@nexolinux ~ $ fg
1- Con el «&» al final de un comando lo ejecutará en segundo plano, vemos que abajo tengo la consola libre para seguir escribiendo y no he visto nada de lo que ha hecho.
2- Con el «bg» puedo ver los procesos en background, o en segundo plano
3- Con el «fg» me lo traigo a la consola que uso actualmente si por ejemplo quiero ver el stdout del comando que está ejecutando.
Deja un comentario