bash - 如何在后台最多运行 4 个作业?

标签 bash

我使用 bash 脚本通过使用 & 符号在后台运行 C++ 程序来利用多核。 (我是一名从事蒙特卡洛模拟的数学家)。

这样我就可以在后台多次运行 C++ 程序。例如:

for x in $(seq 1 1 100)
do 
./program_name &
done

有时program_name会运行得很快,有时会运行得很慢。这是随机的,不可能提前知道。这引发了我的问题:

我该如何做到这一点,以便在任何给定时间同时运行的作业不会超过 4 个? 假设目前有 4 个作业正在运行。我希望一个完成后,下一个就开始。

最佳答案

在 GNU、FreeBSD 和 OSX 上,您可以使用 xargs:

echo {1..100} | xargs -n 1 -P 4 ./program_name

或者,您可以安装并使用 GNU Parallel,它正是为此类事情而设计的(对于 4 个作业而不是 1 个作业/核心,添加 -j 4):

parallel --gnu ./program_name ::: {1..100}

关于bash - 如何在后台最多运行 4 个作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513491/

相关文章:

bash - 如何将 'reset' bash 恢复为出厂设置 - MacOS Sierra

git - 子模块的别名

java - java bash路径中的空格

bash:退出源脚本

linux - 切割列包括尺寸

linux - 批量重命名文件

bash - 重定向 wget header 输出

linux - 打开 tftp 时出错 ://(Time Out)

linux - 如何从命令行获取 Linux 中的 CPU/内核数?

bash - 获取 `make install` 来获取你的 bash_completion