![Traer el trabajo nohup al primer plano](https://rvso.com/image/1035926/Traer%20el%20trabajo%20nohup%20al%20primer%20plano.png)
Considera lo siguientenohup
ejecución:
nohup script.sh > script.out &
¿Hay alguna manera de cerrar sesión en el terminal, volver a conectarlo, volver a poner el proceso en primer plano e interactuar con él usando el teclado?
Respuesta1
nohupno desconecta un comando de la terminal, hace que su script lo ignoreSIGHUP
y redirige stdout/stderr
a un archivo nohup.out
, para que el comando pueda continuar ejecutándose en segundo plano después de cerrar sesión.
nohup
no pone automáticamente el comando que ejecuta en segundo plano. Hay que hacerlo explícitamente, finalizando la línea de comando con un &
.
$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’
jobs
Puede imprimir los trabajos que se están ejecutando actualmente y su estado. Si el comando jobs
no puede encontrarlo, entonces ya no es unproceso hijode esa concha.
$ jobs
[1]+ Running nohup ./script.sh &
Se puede devolver un trabajo en segundo plano al primer plano en bash fg
incluso si se ejecuta con nohup
. Pero eso no cambiará laredirección de salida, que seguirá yendo al archivonohup.out
.
$ fg
nohup ./script.sh
Si cierra el shell/terminal o cierra la sesión, su comando ya no es hijo de ese shell. Pertenece ainit
proceso. Si busca, pstree
verá que ahora pertenece al proceso 1 ( init
). Eso no puede volverse a poner en primer plano porque el primer plano ya no existe.
Respuesta2
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 introducción a Tmux
- Una guía rápida y sencilla para tmux
- Hoja de referencia y referencia rápida de Tmux
pantalla:
- Pantalla - Documentación de la comunidad Ubuntu
- Pantalla GNU: introducción y tutorial para principiantes
- atajos de teclado en pantalla
editar: enlaces agregados para cebadores tmux
Respuesta3
Apoyaré el uso de un multiplexor de terminal, perotmux, no pantalla. La pantalla, a todos los efectos, no recibe 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 a Cthulu. En serio. Mira a la gente a tu alrededorArchivos .screenrc. Sin duda, hay formas de mediar en la abominación de la pantalla de un archivo de configuración.Byobuhace un trabajo admirable como velo entre los usuarios mortales y el código impío. Viene con colores llamativos, una interfaz de menú y quizás lo más importante, una barra de estado.
Pero como dije, lo recomiendo.tmuxen cambio. Todavía requiere alguna configuración menor, pero esbien documentada, 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:
Respuesta4
Cualquier comando de Linux se puede enviar a segundo plano con " &
" añadido al final.
Para ver todos los trabajos en segundo plano, puede emitirjobs
jobs
[1] + suspended nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2] running nohup sh kafka-server-start.sh ../config/server.properties
[3] - running nohup sudo mongod --dbpath=/var/lib/mongodb
Aquí estoy ejecutando 3 trabajos en segundo plano: zookeeper, kafka y mongo daemon. [1],[2] y [3] son números de trabajo respectivos para estas tareas.
Puedes poner esas tareas en primer plano usandofg %$taskNumber.