Me gustaría escribir un script para abrir múltiples programas (servidores) simultáneamente en terminales separadas, no importa cuál, y asignar diferentes comandos a diferentes terminales con comandos "aterrizando" dentro del terminal correcto. es posible?
Tal vez, algo como esto:
- abrir terminal1
- abra terminal2 // simultáneamente con 1.
- comando1 // ejecutar en terminal1 sin abrir una nueva ventana de terminal
- comando2 // ejecutar en terminal2 sin abrir una nueva ventana de terminal
- ...
¿Puedo etiquetar de alguna manera las ventanas de terminal para que los comandos se ejecuten dentro del terminal correcto?
También me gustaría ver todos los terminales mientras se ejecutan sus programas: mis programas tienen un argumento para imprimir el seguimiento / depuración en el terminal. Entonces me gustaría ver qué mensajes se intercambian entre ellos.
NOTA: Estoy menos preocupado por la seguridad de los datos intercambiados ya que este script debería servir como una "simulación". He configurado cada servidor para que se ejecute desde un puerto asignado en localhost.
fuente
Respuestas:
Como menciona que resolvió el problema para su situación específica, a continuación encontrará una solución para fines generales. Gracias a
xdotool
la--sync
opción, funciona bastante confiable en las pruebas que realicé; Pude "enviar" comandos a ventanas de terminal específicas y funcionó perfectamente sin una excepción.Cómo funciona en la práctica
La solución existe a partir de un script, que se puede ejecutar con dos opciones
-set
y-run
:Para configurar (abrir) un número arbitrario de ventanas de terminal, en este ejemplo 3:
Se abrirán tres nuevas terminales, su identificación de ventana se recuerda en un archivo oculto:
Por razones de claridad, minimicé la ventana de terminal desde la que ejecuté el comando :)
Ahora que he creado tres ventanas, puedo enviar comandos a cualquiera de ellos con el comando de ejecución (por ejemplo):
Como se muestra a continuación, el comando se ejecutó en la segunda terminal:
Posteriormente, puedo enviar un comando a la primera terminal:
haciendo
sudo apt-get update
correr en la terminal 1:y así...
Como instalar
El script necesita ambos
wmctrl
yxdotool
:Copie el script a continuación en un archivo vacío, protéjalo como
target_term
(¡sin extensión!) En~/bin
(cree el directorio~/bin
si es necesario.Haga que el script sea ejecutable (no lo olvide) y cierre la sesión / inicie sesión o ejecute:
Ahora configure sus ventanas de terminal, con el número de ventanas requeridas como argumento:
Ahora puede "enviar" comandos a cualquiera de sus terminales con el comando:
La secuencia de comandos
Notas
El script está configurado para
gnome-terminal
, pero puede usarse para cualquier terminal (u otro programa también) cambiando elapplication
en la sección de encabezado del script:No es necesario decir que el script solo funciona con la configuración del terminal (windows) que fue invocada por el comando:
Las ventanas de terminal serán "etiquetadas" por el script, como usted menciona en su pregunta.
target_term
sesión, el archivo oculto, creado por el script, simplemente se sobrescribirá, por lo que no es necesario eliminarlo de lo contrario.fuente