10 votos

¿Cómo comando set en el fondo, cerrar el terminal y volver a fg?

Estoy tratando de averiguar cómo ejecutar un comando en segundo plano y, a continuación, llevar al primer plano posterior. Estoy harto de tutoriales y respuestas donde la gente del estado que es muy sencillo, sólo anexar & al final del comando para conseguir que se ejecute en segundo plano. Funciona sólo dentro de una sola ventana de terminal. Quiero poner el comando en el fondo de un terminal y volver al primer plano después de la reapertura de la terminal

Ejemplo:

$ grunt &
$ jobs
$ [1]+  Running  grunt &

Por supuesto, tras el cierre de la terminal no hay trabajo que se encuentra.

Siguiente ejemplo:

$ grunt & disown #the same behavior has: $ setsid grunt &
$ jobs
$ [nothing] #but ps shows that grunt is working

after close terminal, grunt doesn't work

¿Qué hice mal? Podía alguien me explique cómo ejecutar el comando en segundo plano y volver al primer plano.

16voto

falconer Puntos 8812
  1. Instale screen:

    sudo apt-get install screen
    
  2. Inicio screen:

    screen -S session_name
    
  3. Ejecutar las órdenes de lo que usted necesita.

  4. Separe screen desde el terminal (a sus órdenes serán aún en marcha):

    Presione CTRL+una+d

  5. Cerca de la terminal

  6. Abrir otra terminal y vuelva a colocar la última screen sesión:

    screen -r
    

Para obtener más información y opciones extra para screen buscar en man screen.

11voto

sgx1 Puntos 794

Es imposible en la forma que desee.

Vamos a repasar algunos conceptos básicos:

  • Un grupo de procesos es un conjunto de procesos relacionados que pueden ser señalados a la vez.
  • Una sesión es una colección de grupos de procesos, que están conectados a un único dispositivo terminal (conocida como la terminal de control) o no conectado a cualquier terminal.

Si se cierra la terminal, todos los procesos en la sesión están muertos excepto aquellos (los demonios) repareted al proceso init. Y no hay manera de darles un terminal de control de nuevo.

En una palabra, proceso de reparenting está muy restringido en sistemas POSIX (daemonizing es una excepción) y sus necesidades no pueden ser satisfechas.

5voto

Sneetsher Puntos 15107

Has probado: byobu o tmux que son terminales multiplexores. No es exactamente lo que buscas, pero tiene un comportamiento similar.

byobu-screen

Ejecute el comando para separar:

byobu-screen -d

Retomar:

byobu-screen -r

Ver https://help.ubuntu.com/community/Screen

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X