Traer el trabajo nohup al primer plano

Traer el trabajo nohup al primer plano

Considera lo siguientenohupejecució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 ignoreSIGHUPy redirige stdout/stderra un archivo nohup.out, para que el comando pueda continuar ejecutándose en segundo plano después de cerrar sesión.

nohupno 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’

jobsPuede imprimir los trabajos que se están ejecutando actualmente y su estado. Si el comando jobsno 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 fgincluso 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 ainitproceso. Si busca, pstreeverá 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 tmuxo screen. Puede encontrar información sobre cómo usarlos en los enlaces a continuación:

tmux:

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.

información relacionada