找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 3342|回复: 13

关于我的多拨方法中ip-up脚本会多次运行的问题提出解决办法

[复制链接]
本帖最后由 a86913179 于 2016-10-20 01:38 编辑

#!/bin/sh

lockfile=/tmp/ip-up
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null
then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
if [ $(ip a|grep peer|wc -l) -lt 3 ]
then
killall -9 pppd
fi
rm -f "$lockfile"
trap - INT TERM EXIT
else
echo "Lock Exists: $lockfile owned by $(cat $lockfile)"
fi



这个问题是我在ip-up里添加其他脚本的时候发现的,拨上之后会有几个脚本同时在运行导致最终我的另一个程序退出了,通过类似锁文件的方式(创建临时文件的方法)来保持同时只运行一个脚本,脚本只执行一次,这样就不会有多个脚本执行一个程序多次导致程序崩溃。


我的恩山、我的无线 The best wifi forum is right here.
来自手机 | 显示全部楼层
不错,谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

有改进是好事 不错 支持
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这个真没注意,我自己是开机之后10分钟运行一次检查脚本,把其余没拨上的全部ifdown掉了。有空试试你这个,谢谢

点评

没拨上的没事,拨上了的会同时执行,例如三拨,就会执行三次,但是你如果没添加其他脚本,就只是我原来的最低次数检测,那就没问题,因为条件已经达到,脚本自动结束。我是在这个条件里加了个else来执行我的其他联网  详情 回复 发表于 2016-10-10 23:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-10 23:28
这个真没注意,我自己是开机之后10分钟运行一次检查脚本,把其余没拨上的全部ifdown掉了。有空试试你这个, ...

没拨上的没事,拨上了的会同时执行,例如三拨,就会执行三次,但是你如果没添加其他脚本,就只是我原来的最低次数检测,那就没问题,因为条件已经达到,脚本自动结束。我是在这个条件里加了个else来执行我的其他联网更新github的一些列表加转换列表用,之前老是不成功发现有三个wget在执行,还有3个cat在执行,路由器受不了,强行自动重启了。

点评

这个脚本我加上 else 怎么会不拨了呢?奇怪 麻烦帮我看看  详情 回复 发表于 2016-10-11 00:50
我目前5个接口3拨,3个拨上以后其它2个pppd进程在后台还会不停的尝试拨号,所以写了个脚本在开机10分钟后检查一遍,把没拨上的全部ifdown掉。你可以看看你的系统日志里有没有这种情况  详情 回复 发表于 2016-10-11 00:09
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

a86913179 发表于 2016-10-10 23:44
没拨上的没事,拨上了的会同时执行,例如三拨,就会执行三次,但是你如果没添加其他脚本,就只是我原来的 ...

我目前5个接口3拨,3个拨上以后其它2个pppd进程在后台还会不停的尝试拨号,所以写了个脚本在开机10分钟后检查一遍,把没拨上的全部ifdown掉。你可以看看你的系统日志里有没有这种情况
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 xuefulin 于 2016-10-11 01:28 编辑
a86913179 发表于 2016-10-10 23:44
没拨上的没事,拨上了的会同时执行,例如三拨,就会执行三次,但是你如果没添加其他脚本,就只是我原来的 ...

这个脚本我加上 else 怎么会不拨了呢?奇怪
知道原因了,至少需要sleep 10秒以上
  1. #!/bin/sh

  2. LOCKFILE="/tmp/ip-up.tmp"
  3. trap 'echo "rm lockfile!";rm -f ${LOCKFILE}; exit' 1 2 3 9 15
  4. if [ -f $LOCKFILE ]
  5. then
  6. echo "Instance is running!"
  7. exit 0
  8. else
  9. touch $LOCKFILE
  10. chmod 600 $LOCKFILE
  11. echo "touch successeed!"
  12. if [ $(ip a|grep peer|wc -l) -lt 3 ]
  13. then
  14. killall -9 pppd
  15. else
  16. sleep 15
  17. pgrep -fl mwan3track |grep -q 'vwan1' && echo 'vwan1 is online' || ifdown vwan1
  18. pgrep -fl mwan3track |grep -q 'vwan2' && echo 'vwan2 is online' || ifdown vwan2
  19. pgrep -fl mwan3track |grep -q 'vwan3' && echo 'vwan3 is online' || ifdown vwan3
  20. pgrep -fl mwan3track |grep -q 'vwan4' && echo 'vwan4 is online' || ifdown vwan4
  21. pgrep -fl mwan3track |grep -q 'vwan5' && echo 'vwan5 is online' || ifdown vwan5
  22. fi
  23. echo "finish!"
  24. fi
  25. rm -f ${LOCKFILE}
复制代码


点评

换了代码,你可以重新试下  详情 回复 发表于 2016-10-20 01:39
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-11 00:09
我目前5个接口3拨,3个拨上以后其它2个pppd进程在后台还会不停的尝试拨号,所以写了个脚本在开机10分钟后 ...

system log里还正常,反正固定大小,会把前面的日志丢弃掉,不影响,15.05以上会有记录在kernel log里,你打开看下,绝对惊呆,超长一大串,14.07没有记录在kernel log里。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-11 00:50
这个脚本我加上 else 怎么会不拨了呢?奇怪
知道原因了,至少需要sleep 10秒以上

ifdown之后的口,用killall -9 pppd是启动不了的,只有ifup能启动。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-11 00:09
我目前5个接口3拨,3个拨上以后其它2个pppd进程在后台还会不停的尝试拨号,所以写了个脚本在开机10分钟后 ...

所以不停的尝试拨号我都懒得管,反正也不会出什么问题。

点评

尝试多了不知道会不会让ISP知道,反正我给停止了  详情 回复 发表于 2016-10-12 01:10
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

a86913179 发表于 2016-10-11 15:50
所以不停的尝试拨号我都懒得管,反正也不会出什么问题。

尝试多了不知道会不会让ISP知道,反正我给停止了

点评

别人没事一般不会去查这个。  详情 回复 发表于 2016-10-12 11:07
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-12 01:10
尝试多了不知道会不会让ISP知道,反正我给停止了

别人没事一般不会去查这个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xuefulin 发表于 2016-10-11 00:50
这个脚本我加上 else 怎么会不拨了呢?奇怪
知道原因了,至少需要sleep 10秒以上

换了代码,你可以重新试下

点评

好的,谢谢!  详情 回复 发表于 2016-10-20 21:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

a86913179 发表于 2016-10-20 01:39
换了代码,你可以重新试下

好的,谢谢!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-2 10:09

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表