并行运行脚本时Bash脚本未休眠

兰花小姐

我有几个bash脚本需要并行运行。但是,它们是内存猪,因此我想将它们各自错开30秒,但仍可以并行运行。例如:

hourr=($(seq 0 1 23))

for q in "${hourr[@]}";
do;
echo $q; sleep 10;
done

这将等待10秒,然后依次输出一个从0到23的数字。但是,当我尝试使用脚本执行此操作时:

hourr=($(seq 0 1 23))
input1="20160101"; 
input2="10"; #(Note: These are inputs to each of the scripts I want to run)
scriptdir="/path/to/somewhere"
for q in "${hourr[@]}"
do
if [ "${#q}" == "1" ]
then
hh=0${q}
else
hh=${q}
fi
echo $hh
( bash $scriptdir/Hour$hh.csh $input1 $input2 ; sleep 30 ) &
done
wait
echo "All done!"

但是,在执行主脚本时,所有的Hour脚本会一次(正确且并行)运行,而不会等待我指定的30秒一个接一个地运行。有什么想法吗?

jesse_b

如果您这样做就怎么办?

#/bin/bash

input1='20160101'
input2='10' #(Note: These are inputs to each of the scripts I want to run)
scriptdir='/path/to/somewhere'
for q in {00..23}
do
    hh="${q}"
    echo "$hh"
    ( bash "$scriptdir/Hour$hh.csh" "$input1" "$input2" ) &
    sleep 30
done
wait
echo "All done!"

正如注释中所指出的那样,&也会导致您sleep也在后台执行,因此您的脚本将不会等待它完成才移至循环的下一个迭代。而且你的hourr数组是不必要的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell并行运行脚本

来自分类Dev

并行运行bash脚本?

来自分类Dev

从python脚本并行运行bash脚本

来自分类Dev

如何并行运行 bash 脚本

来自分类Dev

如何并行运行脚本的x个实例?

来自分类Dev

如何并行运行脚本的x个实例?

来自分类Dev

如何在bash脚本中禁用并行运行

来自分类Dev

根据shebang行运行脚本

来自分类Dev

如何在远程计算机上并行运行脚本?

来自分类Dev

存储并行运行的PHP脚本的输出

来自分类Dev

如何并行运行多个shell脚本?

来自分类Dev

查询重新并行运行循环脚本

来自分类Dev

是否有根据脚本的shebang行运行脚本的命令?

来自分类Dev

锁定bash脚本以防止从脚本本身内部并行运行?

来自分类Dev

运行脚本的bash函数

来自分类Dev

使用Bash运行脚本

来自分类Dev

运行脚本时出错

来自分类Dev

运行脚本时脚本替换的问题

来自分类Dev

运行脚本时删除bash文件夹

来自分类Dev

调用多个bash脚本并并行运行,而不是依次运行

来自分类Dev

bash脚本中的命令是并行运行还是一个接一个运行?

来自分类Dev

从命令行运行脚本时防止图形关闭

来自分类Dev

从命令行运行脚本时将文件下载为csv

来自分类Dev

Bash脚本未运行

来自分类Dev

从bash并行运行多个脚本,而无需将输出打印到控制台

来自分类Dev

并行运行两个连续的bash脚本4次

来自分类Dev

并行运行多个具有不同名称的bash脚本

来自分类Dev

从bash并行运行多个脚本,而无需将输出打印到控制台

来自分类Dev

从bash并行运行