nohup
Al finalizar una sesión del bash (exit, logout, CTRL+d) con un shell de entrada e interactivo (CTRL+ALT+F1, ssh, telnet, etc., pero no una terminal gráfica, pues en esta no se ejecuta un shell de entrada aunque sí interactivo), se envía la señal SIGHUP a todos los procesos lanzados en esa sesión que estén ejecutándose en segundo plano o estén parados. El resultado es que todos esos procesos mueren en ese momento. Para evitar esto, se utiliza el comando nohup. Este comando hace que un proceso ignore la señal SIGHUP y redirija su salida al fichero nohup.out que es creado en el directorio desde donde se lanzó el comando, siempre que el usuario tenga permiso para crear dicho fichero, en caso contrario nohup.out se creará en el directorio casa del usuario. En estos casos lo mejor es especificar nosotros mismos, a través de redireccionamientos, cuáles serán los ficheros que guardarán la información de salida y cuál el fichero de entrada si el comando lo necesita (el redireccionamiento se verá más adelante).
La forma de usarse nohup es la siguiente:
nohup comando argumentos &
Por ejemplo:
$ nohup find / -name Descargas > salida.txt 2> errores.txt &
Con el comando anterior podemos finalizar nuestra sesión de GNU/Linux, y cuando volvamos en otro momento, si el comando find terminó, la información de salida estará en los ficheros salida.txt y errores.txt.
Para terminar, es necesario tener en cuenta la opción del shell huponexit, la cual si está desactivada todo lo anterior no es necesario pues el comportamiento del shell con esta opción es la de no enviar señales SIGHUP cuando este se cierra y por lo tanto los trabajos siguen ejecutándose.
Licencia: licencia de software libre GPL