Bash:如果命令超时,执行其他操作

时间:2016-07-22 19:36:10

标签: bash timeout

我正在做以下事情:

timeout 180 bash myscript.txt

myscript.txt应该在不到180秒的时间内完全执行。如果不是,我想要执行emergencyscript.txt。是否可以这样做?

timeout 180 [bash myscript.txt] [bash emergencyscript.txt]

2 个答案:

答案 0 :(得分:4)

如果命令超时,timeout的退出状态为124。您可以明确地测试它。

timeout 180 bash myscript.txt
exit_status=$?
if [[ $exit_status -eq 124 ]]; then
    bash emergencyscript.txt
fi

exit_status的任何其他值都是myscript.txt运行完成的结果。

答案 1 :(得分:0)

也许会尝试检查超时是否失败?

timeout 180 bash myscript.txt
if [ $? -ne 0 ]
then
#....do stuff....
fi

这取决于超时或脚本如果耗时太长则给出非零退出值。