es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar procesos de bash en paralelo en Mac

Estoy intentando ejecutar algunos comandos a través del script de bash en Mac.

Aquí está mi script

#!/bin/bash

testDirectory='/Users/jxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/tests/pagination-integration.test.js'
deleteScript='/Users/xxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/scripts/test-delete-table.sh'
echo "$testDirectory"
cd ../
sls offline start
open -a Terminal.app $deleteScript
RUNNING_PID=$!
kill ${RUNNING_PID}

Problema
sls offline start requerirá mfa y luego registrará la salida continuamente en la terminal (que es necesaria)
– Pero quiero ejecutar el script de eliminación en una terminal separada una vez que se inicie sls offline, pero no se está ejecutando en la nueva terminal con el script actual, de alguna manera solo comienza después de que se mata el proceso de sls
– Una vez que se complete el script de eliminación, matar el proceso sls offline start

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Puede utilizar el comando open con la opción -n para abrir una nueva ventana de Terminal y ejecutar el script test-delete-table.sh en ella. Aquí está el script modificado:

    #!/bin/bash
    
    testDirectory='/Users/jxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/tests/pagination-integration.test.js'
    deleteScript='/Users/xxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/scripts/test-delete-table.sh'
    echo "$testDirectory"
    cd ../
    sls offline start &
    SLSPID=$!
    open -a Terminal.app -n $deleteScript
    wait $SLSPID
    

    Cambios realizados:
    – Se agrega el símbolo & después de sls offline start para ejecutarlo en segundo plano.
    – Se utiliza SLSPID para almacenar el ID del proceso del comando sls offline start.
    – El comando open ahora incluye la opción -n para abrir una nueva ventana de Terminal.
    – Se utiliza el comando wait para esperar a que el proceso sls offline start termine antes de finalizarlo.

    Esto debería abrir una nueva ventana de Terminal ejecutando el script test-delete-table.sh, mientras que el proceso sls offline start sigue ejecutándose en la ventana de Terminal original. Una vez que el script test-delete-table.sh complete su ejecución, el proceso sls offline start se finalizará automáticamente.

Comments are closed.