1 实现思路
在Shell开发中会存在脚本执行出现超时的现象,需要限制命令的执行时间。
这边使用的需求是scp上传文件限制上传时间,请求网络接口等等
timeout 命令
timeout 时间 命令
通过 timeout 限制命令执行时间,同时通过 $? 来获取命令是否超时执行失败
$? 执行上一个指令的返回值 。0表示没有错误,执行失败时返回124。
通过判断返回值是否为124,来判断命令是否超时执行
2 Shell 脚本中的 0 , 0, 0,n, ∗ , *, ∗,#,$ , , ,?, − , -, −,@值是什么?
$0 这个脚本/程序的执行名字
$n 这个脚本/程序的第n个参数值,n=1..9
$* 这个脚本/程序的所有参数,此选项参数可超过9个。
$# 这个脚本/程序的参数个数
$$ 这个脚本/程序的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
3 shell脚本 实现
# 这里进行请求接口判断是否超时
#/bin/bash
timeout 30s curl -s http://XXXXXX:8088/ws/v1/apps?state=RUNNING
if [ $? == 124 ];then
echo '请求超时:'
exit # 程序退出
fi