ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:61.12KB ,
资源ID:14068729      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14068729.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Raspberry Pi树莓派看门狗解决方案Word格式.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Raspberry Pi树莓派看门狗解决方案Word格式.docx

1、modprobe: FATAL: Module bcm2708_wdog not found.出现上面错误请使用下面的命令:原因是名称修改了sudo modprobe bcm2835_wdtecho bcm2835_wdt | sudo tee -a /etc/modules编辑/etc/modules,实现启动时自动加载bcm2708_wdog模块sudo nano /etc/modules在文件最后一行,添加一行bcm2708_wdog启用模块后,则系统增加了一个设备 /dev/watchdog每10秒必须喂一下这个狗二、配置watchdog安装watchdogsudo apt-get i

2、nstall watchdog启动watchdog 软件sudo /etc/init.d/watchdog start编辑 /etc/watchdog.conf 配置文件sudo nano /etc/watchdog.conf在文件中有很多预设的定义,初始是都被注释掉了找到 #watchdog-device = /dev/watchdog 这一行删掉行首的 # 号除了这个外,watchdog.conf还可以定义,如用ping不到某主机则重启等,其它具体参数请参考下图进行修改。重启watchdog 软件sudo /etc/init.d/watchdog restartOK了三、测试最后,确定没有

3、重要的任务在执行,且已去激活交换分区(swap partition or file)输入下述命令(forkbomb),测试一下看门狗: () :|:& ;1.3 软件看门狗软件看门狗,就是在应用层通过应用程序的方式实现系统关键资源及运行状态的定期监测与控制功能,以达到看门狗的功能效果。本方案提供的软件看门狗分别从常出现的网络故障以及U盘故障两方面进行设计和实现,其它功能的实现方法可以类同参考,举一反三即可。1.3.1 网络故障看门狗在产品级的树莓派产品应用过程中,特别是作为一个网络设备产品时,有可能会出现应用层面的网络故障,这时候如果对设备进行网络重启或设备重启操作,是有可能修复的。本方案设计

4、的网络故障看门狗基本实现思路如下:1、制作网络故障检测脚本,主动去PING网关设备10次;2、统计10次PING操作的执行情况,包括成功次数、平均延时等3、综合统计数据情况,如果达到异常阈值,比如延时过大、丢包次数过多等,则进行重启网卡或系统。4、多次重复执行失败后,则可以根据实际需要进行故障报警通知等操作。5、网络故障检测脚本由crontab定时任务定期启动执行,达到持续定期检测的目的。以下为网络故障检测脚本代码,仅供参考:class CheckNetwork(): def _init_(self): self.logger = None self._initLogger(checkfile

5、.getPythonLogDir() + pingTest.log) self.ping_ini = /home/pi/tde/params/pingTest.ini self.chk_ini = checkfile.getGlobalStatusDir() + pingCheck.log self._delay_val = self._get_delay_limit() def _initLogger(self, logfile): self.logger = logging.getLogger(pingTest self.logger.setLevel(logging.DEBUG) if

6、os.path.exists(logfile): os.system(sudo chmod -R 777 %s %(logfile) # set splitter is 100k, and only 1 backup fh = logging.handlers.RotatingFileHandler(logfile, maxBytes=1*10*5, backupCount=1) fh.setLevel(logging.INFO) formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s

7、) fh.setFormatter(formatter) console = logging.StreamHandler() console.setLevel(logging.DEBUG) self.logger.addHandler(fh) self.logger.addHandler(console) def need_check(self): if not os.path.exists(self.ping_ini): self.logger.info(No need check. return False pingcf = Myparser() pingcf.read(self.ping

8、_ini) if pingcf.has_option(PING, RESTART_ENABLE): enable = pingcf.get( if enable = 0: return enable = 1 def get_check_times(self): if not os.path.exists(self.chk_ini): return 0 pingcf.read(self.chk_ini)TRY_TIMES times = pingcf.get( return int(times) def set_check_times(self, times): #if not os.path.

9、exists(self.chk_ini): # return False pingcf.add_section( pingcf.set(, times) pingcf.write(open(self.chk_ini, w) return True def _get_delay_limit(self): delayThreshold = 500 return delayThreshold if not pingcf.has_option(DELAY_VALUE tmp = pingcf.get( try: delayThreshold = float(tmp) except Exception,

10、 e: self.logger.error(Error delay threshold. Use default! return 500 print delay threshold:, delayThreshold return float(delayThreshold) def _get_ipaddr(self): def get_ip(ifname): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ipaddr = socket.inet_ntoa(fcntl.ioctl( sock.fileno(), 0x8915, #

11、SIOCGIFADDR struct.pack(256s, ifname:15) )20:24 ) sock.close() return ipaddr ip = get_ip(eth0 except IOError: return OFFLINE # hostname = socket.gethostname() return ip def check_linked(self, ifname= ret = self._get_ipaddr() if ret = self.logger.warning(No wire link else:Find wire link def ping_route(self, timeout=3): route = ipconfig2.get_default_route( cmd = ping -c 9 %s % route ret = os.popen(cmd).read() # print ret if 0 received in ret: # 简单的判断,不要用含0的次数P

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1