Tengo dos scripts de shell, digamos client.sh
y 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 screen
sesión llamada "mi-trabajo" y se conectará a ella.
$ ./server.sh
Esto iniciará su server.sh
secuencia de comandos en la primera terminal (predeterminada) adjunta a la screen
sesió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 screen
y 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 bash
y buscar 'CONTROL DE TRABAJO' (escriba /^JOB CONTROL
en 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 jobs
comando de bash. Esto enumerará todos los trabajos en segundo plano, su número de trabajo y su estado.
Con bg n
o %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 n
o %n
puede 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.