我有几个不同的perl脚本,我同时运行。所有这些文件都使用相同的文本文件作为输入(textfile.txt
)。有没有办法可以写一次文件名而不是多次写文件?
$ perl myscript1.pl textfile.txt & perl myscript2.pl textfile.txt &
perl myscript3.pl textfile.txt & perl myscript4.pl textfile.txt &
perl myscript5.pl textfile.txt & perl myscript6.pl textfile.txt &
perl myscript7.pl textfile.txt & perl myscript8.pl textfile.txt
解
您可以通过以下方式将多个文件和多个脚本并行传递:
parallel perl ::: myscript*.pl ::: textfile*.txt
答案 0 :(得分:3)
未经测试... GNU Parallel
parallel perl {} textfile.txt ::: myscript*.pl
首先使用parallel --dry-run ...
运行,如果您想查看它会做什么,但实际上没有做任何事情。
请注意,如果您有4个CPU内核,它将并行启动4个作业,然后在每次作业完成时启动一个新作业,这与一次运行所有内容略有不同。如果您有32个作业,但只有4个核心,并且所有32个核心应该同时运行,那么请使用parallel -j 32 ...
。
答案 1 :(得分:0)
run_all_perl() (
perl_scripts=(
myscript1.pl myscript2.pl myscript3.pl myscript4.pl
myscript5.pl myscript6.pl myscript7.pl myscript8.pl
)
for script in "${perl_scripts[@]}"; do
perl "$script" "$1" &
done
wait
)
run_all_perl textfile.txt