Saltar al contenido

¿Cómo puedo ejecutar varios scripts de Bash simultáneamente en una ventana de terminal?

Te recomendamos que revises esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

No pierdes el control sobre ellos. Los está enviando (aparte del último) al fondo.

Si ejecuta la cadena de comandos que especifica, la invocación ./script.sh 4 estará en primer plano y los demás scripts se ejecutarán en segundo plano. La entrada se enviará al script de primer plano. Para suspender el guión de primer plano, presione ControlZ. Para enviar el script suspendido a un segundo plano para continuar ejecutándose, use el bg dominio.

Para ver los scripts (o más correctamente, los trabajos) que tiene y los estados en los que se encuentran, use jobs.

Para resaltar un trabajo específico, utilice fg y su número (según lo informado por el mencionado jobs) con un % prefixp.ej fg %2. Para finalizar un trabajo específico, puede traerlo al primer plano con fg y termínalo con cordura, o puedes kill eso, por ejemplo kill -TERM %2.

Después de probar diferentes métodos y programas, descubrí que la solución pragmática es GNU Parallel. Publico esta respuesta ya que puede ayudar a otros.

GNU Parallel no ha sido construido para esta tarea, pero cumple perfectamente el propósito.

Si ejecuta los scripts como

parallel -u ::: './script.sh 1' './script.sh 2' #(and so forth)

Todos los scripts se ejecutarán en paralelo.

los -u (--ungroup) envía las salidas del script a stdout mientras se ejecutan los scripts.

Control+C mata al parallel trabajo y, posteriormente, todos los scripts en ejecución.

Puedes usar tmux para esto.

Es un multiplexor de terminal, lo que significa que divide una pestaña en varias ventanas.

  • Comience con el comando tmux.
  • Usar Contr+B seguido de " o % para dividir un panel en dos paneles.
  • Iniciar procesos en primer plano.
  • Cambiar entre los procesos uding Contr+B seguido de flecha keys.

Ahora tiene control normal sobre múltiples procesos en una pestaña de su terminal.

Si desea enfocar (o desenfocar) un panel específico, use Contr+B seguido por Z.

Si necesita desplazarse utilice Contr+B seguido por Q y desplazarse usando la flecha keys(o activa el modo ratón).

Puedes encontrar una hoja de trucos aquí.

También es posible automatizar ese proceso.

Si te sientes incitado, puedes dejar un post acerca de qué le añadirías a este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *