linux - example - threads bash




Hilos en bash? (2)

¿Es posible utilizar hilos en scripts de bash? Tengo una clase de controlador en java que estoy intentando ejecutar varias instancias al mismo tiempo. La única forma que conozco para hacer esto es hacer hilos en bash, pero no estoy seguro de si eso es posible. Cualquier ayuda sería apreciada


Bash no admite subprocesos en sí, pero puede iniciar varios procesos Java en segundo plano, como:

java myprog &
java myprog &
java myprog &

Algo más que eso puede buscar en Python o Ruby, que tienen utilidades de administración de subprocesos, puede esperar a que cada uno termine y recopile el estado de salida / salida, etc.

Edit : Tomando prestada la sugerencia de @ CédricJulien para usar wait , aquí hay un ejemplo más completo. Dado este programa MyProg.java :

public class MyProg {
    public static void main(String[] args) {
        System.exit(Integer.parseInt(args[0]));
    }
}

podría escribir la siguiente bash-threads.sh comandos bash-threads.sh para iniciar varias instancias en paralelo:

#!/bin/bash
set -o errexit

java MyProg 1 &
pid1=$!
java MyProg 0 &
pid2=$!
java MyProg 2 &
pid3=$!

wait $pid1 && echo "pid1 exited normally" || echo "pid1 exited abnormally with status $?"
wait $pid2 && echo "pid2 exited normally" || echo "pid2 exited abnormally with status $?"
wait $pid3 && echo "pid3 exited normally" || echo "pid3 exited abnormally with status $?"

Su salida es:

pid1 exited abnormally with status 1
pid2 exited normally
pid3 exited abnormally with status 2

No podrá iniciar algunos "subprocesos de bash", pero puede iniciar subprocesos en bash, simplemente utilizando el comando & después del comando, y lo iniciará en un proceso en segundo plano.

Llame a la wait después de iniciar los procesos para esperar a que finalicen.

Prueba esto

first_command &
second_command &

wait




terminal