最专业的八方代购网站源码!

资讯热点
如果Linux shell脚本执行超时,我该怎么办?

发布时间:2023-6-10 分类: 电商动态

shell中有一种不常见的情况,即脚本有时会超时。一般来说,当我们遇到这种问题时,我们会简单而粗鲁地使用以下脚本作为超时监视器<:

此脚本与两个变量一起使用。监视一个小代码是可以的,但它的逻辑仍然很粗糙。例如,如果在执行脚本时在后台启动了新进程,则kill是新进程,应该已停止的脚本仍然在后台运行不正常。

为了不杀无辜,所以在这种情况下,你必须使用timeout命令,具体用法请man timeout,这个命令包含在centos 6中。

假设我们要ping www.baidu.com并询问“如果它没有响应超过5秒,请停止此任务”。然后使用命令:timeout 5s ping www.baidu.com,效果如下:

从26秒到31秒,它确实达到了在5秒内跳出的效果。

刀具测试的结束,然后让我们改进我们之前使用的MQ脚本。我曾经在http://chenx1242.blog.51cto.com/10430133/1884415中写了一个MQ脚本,但MQ脚本有点理想化,在Forgot中添加“超时监控”和“当重启失败时,将发送一封电子邮件提醒操作和维护人员“,这两个功能,这里我们将填写两个短板。

首先,让我们看看这个MQ监视程序脚本需要运行的时间:

从上面可以看出整个脚本运行大约需要13秒,然后我们考虑其他因素将超时时间设置为20秒,执行效果如下:

返回码为0,如果由于超时而停止,则查看返回码?

可以看出,由于超时停止的返回码是124(ctrl + c手动退出的返回码是130),整个脚本编写如下:

然后直接在crontab中执行此脚本。

补充说明之一,当在文本中测试超时命令时,我用ping,其实这并不严谨,因为unix ping默认会无限期重复,所以超时3s ping www.baidu.com会超时而不管网络连接 。这里最好的例子是查看超时3s睡眠1和超时3s睡眠5之间的区别。

另外,在shell脚本中,如果超时后跟一个函数,则它是无效的!

« 如何进行代购源码网站收藏?统一! | 在考虑体验和安全性代购源码网站构建时,您可以使用这样的验证码 »