Bash 如何使用GNU parallel将带有参数的shell脚本并行化?
我不熟悉bash脚本。我有一个shell脚本,通过终端在Matlab中运行多个纵向图像处理函数。我想在终端中并行化这个过程 以下是它如何运行的简要示例:Bash 如何使用GNU parallel将带有参数的shell脚本并行化?,bash,matlab,terminal,parallel-processing,Bash,Matlab,Terminal,Parallel Processing,我不熟悉bash脚本。我有一个shell脚本,通过终端在Matlab中运行多个纵向图像处理函数。我想在终端中并行化这个过程 以下是它如何运行的简要示例: ./script.sh *.nii -surface -m /Applications/MATLAB_R2018b.app/bin/matlab *.nii是指在不同时间(即subject1img1 subject1img2 subject3img3)拍摄的单个对象的图像。在我的案例中,每个主题有3张图片。因此,在每次运行中,脚本都会遍历单个
./script.sh *.nii -surface -m /Applications/MATLAB_R2018b.app/bin/matlab
*.nii
是指在不同时间(即subject1img1 subject1img2 subject3img3)拍摄的单个对象的图像。在我的案例中,每个主题有3张图片。因此,在每次运行中,脚本都会遍历单个主题的所有图像
我想并行化这个过程,这样我就可以同时为多个主题运行这个脚本。通过阅读GNU并行与我的小经验,我无法找出我需要写的代码,使它发生。如果有人有任何建议,我将不胜感激。您可以在后台使用for循环启动它们,如下所示:
for f in *.nii
do
./script.sh "$f" -surface -m /Applications/MATLAB_R2018b.app/bin/matlab &
done
欢迎来到SO。更新您的问题以满足..的标准。所以不是一个“我们做你的编码”为您的网站。所以,请在您尝试编写的代码和失败的代码上显示您的努力。分类检查结束。。并完成巡演;-)你好,谢谢。所以我尝试了这个方法,并且考虑到我希望在每次迭代中都有一对文件,我使用了两个{}{}。但是看起来,尽管我将parallel的最大作业数定义为3,它打开MATLAB的次数不是3倍,而是文件对数的倍(本例中为10)。我不知道该怎么办,因为它会使我的系统过载。不管怎样,有没有办法告诉我们,在任何时候都有3份工作?这是我的代码:parallel--jobs 3./cat_batch_long.sh{}{}-surface-m/Applications/MATLAB_R2018b.app/bin/MATLAB::::*.nii
parallel ./script.sh {} -surface -m /Applications/MATLAB_R2018b.app/bin/matlab ::: *.nii