是否可以在bash脚本中使用线程。我在Java中有一个驱动程序类,试图同时运行多个实例。我知道做到这一点的唯一方法是在bash中创建线程,但是我不确定那是否有可能。任何帮助,将不胜感激
Bash本身不支持线程,但是您可以在后台启动多个Java进程,例如:
java myprog & java myprog & java myprog &
除了具有线程管理实用程序的Python或Ruby之外,您还可以等待其他每一个完成并收集输出/退出状态等。
编辑 :从@CédricJulien借用建议wait,这是一个更详尽的示例。鉴于此MyProg.java程序:
wait
MyProg.java
public class MyProg { public static void main(String[] args) { System.exit(Integer.parseInt(args[0])); } }
您可以编写以下bash-threads.sh脚本来并行启动该脚本的多个实例:
bash-threads.sh
#!/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 $?"
其输出为:
pid1 exited abnormally with status 1 pid2 exited normally pid3 exited abnormally with status 2