启动脚本中避免目标地址为域名的网络连接

项目启动脚本想要判断当前网络环境(内网是否连通),于是加了如下脚本代码:

    ping -c1 -W1 xxx.xxx.com > /dev/null
    if [ $? = 0 ]; then

我们的项目启动脚本安装到/etc/init.d/下面了,因此会随服务器重启而启动。于是就出现了下面的情景: 某些服务器启动花了几十分钟时间才启动完成。 这部分服务器在启动的时候网络不通。

解决方法将脚本改成如下:

    ping -c1 -W1 172.xxx.xxx.xx > /dev/null
    if [ $? = 0 ]; then

将脚本中连接测试的目标从域名改成了IP,这个问题就解决了。

原因:

域名解析的过程阻塞的,即请求域名服务器解析目标域名为IP的操作是阻塞的,当服务器无网络,则网络请求阻塞在域名解析的步骤。

以上的问题同样可能会出现在linux c函数gethostbyname(hostname)中,同样,也应该避免进程建立之前(启动完成判断,比如建立pid之前)调用改函数。

时间: 2025-01-03 23:23:26

启动脚本中避免目标地址为域名的网络连接的相关文章

shell启动脚本中的0、1、2、>和&解析

目录 一.0 1 2 文件描述符 二.>是重定向符,就是把前面输出的内容重定向到后面指定的位置 三.& 是一个描述符,如果1或2前不加&,会被当成一个普通文件 nohup sh gmv.sh >ls.txt 2>&1 &  后台运行脚本的一般格式,并且把日志(正常日志和错误日志)输出到ls.txt中 tail -f ls.txt可以动态查看日志 一.0 1 2 文件描述符在 shell 程式中,最常使用的 FD (file descriptor) 大概有三

shell脚本中匹配ip地址

#!/bin/bashread -p 请输入一个地址: IP [[ "$IP" =~ ^(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]] && echo it is ok 原文地址:https://blog.51cto.com/14240018/2429169

nginx启动脚本编写及设置开机自启动

环境:Centos 6.8 如果机器是Centos 7的,此脚本和设置开机自启动方法不适用. 首先确保nginx配置文件中:有pid目录 pid        logs/nginx.pid; 1.1 编写nginx启动脚本 [[email protected] ~]# cd /server/scripts [[email protected] scripts]# vim nginx.sh  #!/bin/bash [ -f /etc/init.d/functions ] && . /etc

ubuntu18.04设置启动脚本

需要在启动时自动执行init_frpc.sh脚本,以下为脚本内容 cd [dir of frpc config files] #使用nohup保证frpc在后台运行 nohup ./frpc -c ./frpc.ini & 1.复制或软连接脚本到/etc/init.d/目录下 2.将脚本添加到初始化执行的队列中去 注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如99. 命令:update-rc.d filename defaults NN命令 #(NN为启动顺序) ubuntu 18.

windows openresty 死磕:安装和启动脚本

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy-SpringCloud 微服务脚手架 &视频介绍: Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架.并配有一系列的使用教程和视频,大致如下: 高并发 环境搭建 图文教程和演示视频,陆续上线: 中间件 链接地址 Linux Redis

启动脚本

centerOs: centeros 开机启动:/etc/rc.local 加入如 su - hujh -c ‘/home/hujha/apache-tomcat-7/bin/start.sh’ Ubuntu下添加开机启动脚本 1.方法一,编辑rc.loacl脚本  Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中添加启动脚本. 当然要添加到语句:exit 0 前面才行. 如: sudo vi /etc/rc.local 然后在

Python中的类方法及属性总结举例,编写memcached启动脚本举例

1.类的属性总结类属性,也是公有属性, 类的私有属性, 对象的共有属性, 对象的私有属性, 内置属性, 函数的局部变量, 全局变量, #/usr/bin/env python # -*- coding:utf-8 -*- class MyClass(object): var1 = '类属性,类的公有属性 var1' __var2 = '类的私有属性 __var2' def func1(self): self.var3 = '对象的公有属性 var3' self.__var4 = '对象的私有属性

Linux中nginx服务器启动脚本

Linux中nginx服务器启动脚本,将此脚本放入/etc/init.d/目录下,进行启动和关闭,并用chkconfig命令将nginx加入到chkconfig管理中,设置开机自启动. 详细脚本如下: #!/bin/bash #author wangning #date 2017-7-14 #qq 1198143315 #Email [email protected] [ -f /etc/init.d/functions ] && . /etc/init.d/functions #chkc

简单实用的启动脚本文件(更新中)

原来工作遇到的脚本,记下来几个,感觉很有用: 1 # Some shotcuts of the shells 2 # .startsh 3 # 4 # User specific aliases and functions 5 # 6 alias ..='cd ..' 7 alias ...='cd ../..' 8 alias cls=clear 9 alias ll='ls -al' 10 alias grep='grep -n' 11 alias net='netstat -n|grep'