我正在尝试设置一个travis脚本,我们运行我们的应用程序,以确保它启动正常。如果是,那么我们可以通过构建。测试在启动时捕获错误。但是,它是一个api服务器,如果我运行二进制文件并且它成功,它将无限期地运行。
我尝试使用以下内容:
timeout --preserve-status 20s <binary>
但是这只会返回二进制文件的退出代码,该代码在超时时被终止。
timeout 20s <binary>
成功时返回127。
如果启动时出现二进制错误并且启动时成功启动说20秒后退出0以通过travis构建,是否可以使用运行二进制文件的脚本失败?
答案 0 :(得分:3)
无需使用sleep
您可以通过以下方式更改命令以强制0
处的返回代码:
(timeout 20s <binary>; exit 0)
示例:
(timeout 2s '/bin/sleep' 100; exit 0) #subshell creation
echo $?
0
VS
timeout 2s '/bin/sleep' 100
echo $?
124
答案 1 :(得分:3)
如果您要:
返回退出代码0 :
返回退出代码1 :
然后尝试:
timeout 10m some_command || ( [[ $? -eq 124 ]] && \
echo "WARNING: Timeout reached, but that's OK" )