线程在bash中?

是否有可能在bash脚本中使用线程。 我在java中有一个驱动类,我试图同时运行多个实例。 我知道这样做的唯一方法是在bash中创build线程,但我不确定这是否可能。 任何帮助,将不胜感激

Solutions Collecting From Web of "线程在bash中?"

Bash不支持线程本身,但是你可以在后台启动多个java进程,比如:

 java myprog & java myprog & java myprog & 

除了可以查看带有线程管理实用程序的Python或Ruby之外,您可以等待每个完成并收集输出/退出状态等。

编辑 :借用@CédricJulien的建议来使用wait ,这里是一个更彻底的例子。 鉴于这个MyProg.java程序:

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

你可以写下面的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 

你将不能启动一些“bash线程”,但是你可以在bash中启动子进程,只需使用& after命令,它将在后台进程中启动它。

启动流程后等待它们完成,请等待。

尝试这个

 first_command & second_command & wait