¿Cómo utilizar un terminal con múltiples trabajos interactivos sin detenerlos?

¿Cómo utilizar un terminal con múltiples trabajos interactivos sin detenerlos?

Tengo dos scripts de shell, digamos client.shy server.sh, que tienen que funcionar simultáneamente y proporcionar resultados útiles watch.
Y solo puedo usar una terminal. Entonces debería cambiar entre ellos para ver qué sucede pero sin detenerlos ( Ctrl+ Z).
No puedo entender cómo hacer esto.
cuando corro

./server.sh &

luego escriba Enterterminal (antes de iniciar elcliente.sh), pero se nota

[1]+ Stopped                   ./server.sh

¿Existe una forma práctica de cambiar entre trabajos en la terminal para ver su salida (estado interno) sin detenerlos?

Respuesta1

Usar screen:

$ screen -S my-job

Esto iniciará una nueva screensesión llamada "mi-trabajo" y se conectará a ella.

$ ./server.sh

Esto iniciará su server.shsecuencia de comandos en la primera terminal (predeterminada) adjunta a la screensesión. Ahora presione Ctrl- Aseguido de Ctrl- C. Esta voluntadCCree una nueva terminal y cámbiela. Ahora puedes ejecutar:

$ ./client.sh

y observar su salida. Para alternar entre ambos, presione Ctrl- Aseguido de Ctrl- Anuevamente.

Para desconectarse screeny dejar sus programas ejecutándose, presione Ctrl- Aseguido de dparaDseparar. Para reconectarse y ver su salida nuevamente, use:

$ screen -x my-job

También puede ver el resultado de ambos scripts a la vez, mientras están adjuntos, haciendo lo siguiente:

  • Presione Ctrl- Aseguido de sparaSdivide tu vista.
  • Presione Ctrl- Aseguido de Tabpara bajar a la división inferior
  • Ctrl- Aseguido de "para abrir una lista de terminales activos y seleccione el terminal 1 (el 0 está conectado a la división superior de forma predeterminada).

Respuesta2

Lo que estás buscando es el control del trabajo de Bash. Puede leer todo al respecto man bashy buscar 'CONTROL DE TRABAJO' (escriba /^JOB CONTROLen la página de manual de bash).

Sin embargo, command &el comando debería seguir ejecutándose en segundo plano. Puedes verificar eso con el jobscomando de bash. Esto enumerará todos los trabajos en segundo plano, su número de trabajo y su estado.

Con bg no %n &puede reanudar un trabajo detenido con el número de trabajo n (por ejemplo, bg 5 para reanudar el trabajo número 5).

Con fg no %npuede obtener un trabajo desde el fondo hasta el primer plano.

Espero que esto ayude.

Respuesta3

Utilice algo como screen(1) o tmux(1) para ejecutar el equivalente de múltiples terminales al mismo tiempo. Incluso puedes cerrar sesión y volver a tomarlos desde otro lugar.

Utilice pestañas, por ejemplo, en Gnome Terminal.

Utilice el control de trabajos en bash(1) (asegúrese de leer las partes relevantes del archivo de información) para detener/trabajos en segundo plano/en primer plano.

información relacionada