是否可以在bash脚本中使用线程。我在Java中有一个驱动程序类,试图同时运行多个实例。我知道做到这一点的唯一方法是在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
问题内容: 我想在我的shell脚本中引入多线程功能。 我有一个脚本,使用不同的参数调用该函数。这些函数调用中的每一个都是独立的。 可以并行实例化这些函数调用(而不是脚本)。请让我如何实现这一目标。 问题答案: 当然,只需在命令后添加: 所有这些作业将同时在后台运行。然后,可选命令将等待所有作业完成。 每个命令将在单独的进程中运行,因此从技术上讲,它不是“多线程”,但我相信它可以解决您的问题。
问题内容: 如何使用线程和子流程模块产生并行bash流程?当我启动线程时,这里的第一个答案是:如何在Python中使用线程?,bash进程按顺序运行,而不是并行运行。 问题答案: 你不需要线程来并行运行子流程: 为了限制并发命令的数量,可以使用线程并提供与使用进程相同的接口: 该答案演示了限制并发子进程数的各种技术:它显示了,线程+基于队列的解决方案。 你可以限制并发子进程的数量,而无需使用线程/
好了,现在我们换了一个遥控器,感觉顺手多了。现在来操练一下,下载一首 mp3: 我们使用 wget 这个程序,它非常可靠,完全值得您信赖。 首先找到一个可以下载的地址,复制链接,在终端窗口内点击鼠标中键,把它粘贴进去。 现在终端中大概是这种情形: http://linuxtoy.org/xxx.mp3 按下 Ctrl+a 组合键,我们发现光标移动到了行首。输入 wget 和 空格 wget ht
语法 基本语法 名称 语法 描述 示例 interpreter #!/bin/bash Bash shell 脚本的第一行以 #! 开头,通常也称为 sharp-bang 或缩写版本 sha-bang。后面的路径名称是命令解释器,也就是应该用于执行脚本的程序。 echo echo "arbitrary text" echo "arbitrary text" >&2 文本定向到标准输出 (STDOU
bash 是一个为GNU项目编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由Stephen Bourne在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由B
Bash++ 是一个将 bash 提升到一个新水平的框架,为 bash 引入了新功能。它的设计是为了让人们能够建立更复杂的应用程序,创造更好的产品。 请注意,这个项目是为有 bash 经验的人准备的(不多,只是简单的理解和事情通常如何运作)。 运行示例 (确保你已经安装bash++) cd 进入示例目录。 对你想运行的脚本进行chmod。 chmod +x [SCRIPT.sh] 运行该脚本 ./[SCRIPT].sh