首页 > 代码库 > WatchDog程序
WatchDog程序
watchdog是什么?
通俗的叫法“看门狗”,通常可以认为是一个守护程序,它可以监控单个进程,也可以真个系统的运行状态,当它监控的程序或系统,在一段时间内(一般情况为1分钟)没有操作后,它就会重新启动这个程序或者系统。
按照我的想法,watchdog大概可以不规范的分为两种:
1、程序级的
2、系统级的
1)程序级的watchdog
程序级的watchdog,通常指的是监控单个程序,当该程序莫名被杀死,或者该程序由于一些原因(内存不足,空间不足,GC回收等),异常终止时,watchdog程序会尝试重新启动该程序,使之能够正常运行。
2)系统级的watchdog
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。
内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备,就会导致在内核中启动一个 1分钟的定时器,此后,用户空间程序需要保证在 1分钟之内向这个设备写入数据,每次写操作会导致重新设定定时器。如果用户空间程序在 1分钟之内没有写操作,定时器到期会导致一次系统 reboot 操作。
用户空间程序可通过关闭 /dev/watchdog 来停止内核中的定时器。
用户空间的 watchdog 守护进程:
在用户空间,还有一个叫做 watchdog 的守护进程,它可以定期对系统进行检测,包括:
Is the process table full?
Is there enough free memory?
Are some files accessible?
Have some files changed within a given interval?
Is the average work load too high?
Has a file table overflow occurred?
Is a process still running? The process is specified by a pid file.
Do some IP addresses answer to ping?
Do network interfaces receive traffic?
Is the temperature too high? (Temperature data not always available.)
Execute a user defined command to do arbitrary tests.
如果某项检测失败,则可能导致一次 soft reboot (模拟一次 shutdown 命令的执行),也就是我们通常情况下所说的异常重启。
本文出自 “为了生活而生存” 博客,请务必保留此出处http://smallrookie.blog.51cto.com/9146983/1544629
WatchDog程序