linux 程序联网运行,Ubuntu 联网后自动运行程序 监测网络连接

概要

在Debian/Ubuntu的发行版本里,网络建立前、后和网络断开前、后都会到/etc/network/里运行相应目录下的脚本if-down.d -- 网络关闭前

if-post-down.d -- 网络关闭后

if-pre-up.d -- 网络建立前

if-up.d -- 网络建立后

思路

(1)在网络建立后,我们要在/etc/network/if-up.d/目录下增加一个自动连接***的脚本,这样可以保证只要是联网状态下就可以连接***

#!/bin/bash

#变量定义

PATH=/sbin:/usr/sbin:/bin:/usr/bin

config_path="/home/wangzhengyi/cloud-1/open***-client.o***"

#导入环境变量

. /lib/lsb/init-functions

export PATH=$PATH

#网络建立后运行open***

log_daemon_msg "starting client open***"

nohup open*** $config_path

(2)在网络断开前,我们要结束掉所有的***进程,防止程序出现bug首先,说一个bug,ubuntu的/etc/network/if-down.d/和/etc/network/if-post-down.d/目录下的脚本并不会在网络断开时执行,原因我google也没找到

强调,千万不要思维定式,花了几个小时的时间解决这个问题就是思维定式了,可以考虑写个监测脚本检测网络是否畅通,如果网络down掉则kill掉所有的***进程即可,然后crontab定时运行就ok了,上脚本代码

#!/bin/bash

#变量定义

urls=("www.88181.com" "www.linuxidc.com" "www.6688.cc")

http_code=("200" "301" "302" "404")

count=${#urls[*]}

connected=0

#检测网络

for ((i = 0; i < $count; i ++))

do

url=${urls[$i]}

result=$(curl -o /dev/null -s -m 10 -w %{http_code} $url)

for flag in ${http_code[*]}

do

if [ $flag = $result ];then

connected=$(expr $connected + 1)

fi

done

done

#网络down时kill所有***进程

if [ $connected -eq 0 ];then

***_pids=$(ps -aux |grep -i 'open***'|grep -v 'grep'|awk '{print $2}')

for pid in ${***_pids[*]}

do

kill -9 $pid

done

fi

crontab定时运行

* * * * * monitor_scripts

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值