我有一个包含其他脚本的bash脚本,它们按顺序运行。然而,运行所有脚本需要相当长的时间。是否有一种方法可以并行运行这些脚本以提高运行效率?它们互不影响。
它看起来类似于:
#!/bin/bash
#some code here
cppcheck.sh
churn.sh
run.sh
更新:
**git log --pretty=format: --numstat | perl -ane'$c{$F[2]} += abs($F[0]+$F[1])
if $F[2];END {print "$_\t$c{$_}\n" for sort keys %c}' > ${OUTPUT_DIR}/churn.txt**
sed -i -e '/deps/d;/build/d;/translations/d;/tests/d' -e 30q ${OUTPUT_DIR}/churn.txt
sort -r -n -t$'\t' -k2 ${OUTPUT_DIR}/churn.txt -o ${OUTPUT_DIR}/churn.txt
echo "set term canvas size 1200, 800; set output '${OUTPUT_DIR}/output.html';
unset key; set bmargin at screen 0.4; set xtics rotate by -90 scale 0,0;
set ylabel 'Number of lines changed (total)'; set title 'Files with high churn
level';set boxwidth 0.7; set style fill solid; set noborder;
plot '${OUTPUT_DIR}/churn.txt' using 2:xticlabels(1) with boxes" | gnuplot
echo "finished running churn.sh!"
这是churn.sh中的代码。粗体命令需要大约40秒才能执行。如果在主脚本中放置churn.sh&之后的&符号,它会抛出一个错误,说sed无法读取churn.txt文件(因为它还没有被创建)。似乎它不会等到输出保存在文件中。我在那个命令之后插入了wait,但它没有帮助。
sleep n && churn.sh &
。否则,最好按顺序执行它们。 - Anirudh Ramanathan${OUTPUT_DIR}
在子脚本中没有被设置。您的父脚本是否执行了export OUTPUT_DIR=<value>
?您能否先使用硬编码的OUTPUT_DIR
进行检查? - Anirudh Ramanathan