Solución:
nohup no desconecta un comando de la terminal, hace que su script ignore SIGHUP
y redireccionamientos stdout/stderr
a un archivo nohup.out
, para que el comando pueda seguir ejecutándose en segundo plano después de cerrar la sesión.
nohup
no pone automáticamente el comando que ejecuta en segundo plano. Uno debe hacer eso explícitamente, terminando la línea de comando con un &
.
$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’
jobs
Puede imprimir trabajos en ejecución y su estado. Si el comando jobs
no puede encontrarlo, entonces ya no es un proceso hijo de ese shell.
$ jobs
[1]+ Running nohup ./script.sh &
Se puede devolver un trabajo en segundo plano al primer plano en bash usando fg
incluso si se ejecuta con nohup
. Pero eso no cambiará el redirección de salida, que seguirá yendo al archivo nohup.out
.
$ fg
nohup ./script.sh
Si cierra el shell / terminal o cierra la sesión, su comando ya no es un hijo de ese shell. Pertenece a init
proceso. Si buscas en pstree
verá que ahora es propiedad del proceso 1 (init
). Eso no puede volver al primer plano porque el primer plano ya no existe.
Si desea iniciar un script, ejecutarlo sin que la salida moleste a su terminal y luego abrirlo más tarde para interactuar con él, es posible que desee echar un vistazo a un multiplexor de terminal. Dependiendo de su sistema, recomendaría tmux
o screen
. Puede encontrar información sobre cómo usarlos en los enlaces a continuación:
tmux:
- Una cartilla de Tmux
- Una guía rápida y sencilla de tmux
- Hoja de trucos y referencia rápida de Tmux
pantalla:
- Pantalla – Documentación de la comunidad de Ubuntu
- Pantalla GNU: introducción y tutorial para principiantes
- atajos de teclado de pantalla
editar: enlaces agregados para los cebadores tmux
Secundaré el uso de un multiplexor de terminal, pero tmux, no pantalla. La pantalla está, para todos los efectos, sin mantenimiento. Su configuración es un arte oscuro, probablemente registrado por primera vez en un apéndice del Necronomicon. Intentar escribir tu propia configuración es como un vistazo de Cthulu. Seriamente. Mire a su alrededor los archivos .screenrc de las personas. Sin duda, hay formas de mediar en la abominación de la pantalla de un archivo de configuración. Byobu hace un trabajo admirable como el velo entre los usuarios mortales y el código impío. Viene con colores sensibles, una interfaz de menú y, quizás lo más importante, una barra de estado.
Pero como dije, recomiendo tmux en su lugar. Todavía requiere una configuración menor, pero está bien documentado y su archivo de configuración no se verá como un galimatías. Además, comienzas con colores y una barra de estado. Compare mis archivos screenrc y tmux.conf:
- screenrc
- tmux.conf