所以我有这样的代码。它运行两个外部脚本,有时它们运行时间太长。我想限制它们的执行,为每个循环迭代添加超时,但我不知道如何实现。
files=($pathgtp/*.*)
i=0
while [ $i -lt ${#files[*]} ]; do
f=${files[$i]}
o=$(basename -- "$f")
o=${o%.*}
o=$pathmid/$o.mid
$PWD/GuitarProToMidi "$f" -o "$o" -f # first script here
$pythonvenv $pythonscript "$o" # second script here
rm "$o" # remove temporary file
((i++))
done
答案1
您可以使用timeout
GNU coreutils
.从man timeout
:
姓名
timeout
- 运行有时间限制的命令概要
timeout [OPTION] DURATION COMMAND [ARG]... timeout [OPTION]
描述
开始
COMMAND
,如果还在追的话就杀掉它DURATION
。[...]