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

3
我正在进行以下操作:
timeout 180 bash myscript.txt

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

例如:

timeout 180 [bash myscript.txt] [bash emergencyscript.txt]
3个回答

12

timeout 的退出状态为 124,如果命令超时。您可以显式地测试此状态。

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

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


2
#!/bin/bash
if ! timeout 180s bash myscript.txt; then bash emergencyscript.txt; fi

1
也许可以检查一下超时是否失败了?
timeout 180 bash myscript.txt
if [ $? -ne 0 ]
then
#....do stuff....
fi

这取决于超时或脚本执行时间过长时是否返回非零退出值。

已解决!我更喜欢你的答案,检查更加具体。 - Dylan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接