linuxshell看门狗,Linux下如何使⽤看门狗
Linux内核有集成WD的选项。将其使能后,系统⾥就会有watchdog的设备驱动:/dev/watchdog.
这样,在应⽤程序⾥只需打开这个设备使⽤即可:
#include
void main(void)
{
int fdWD;
char chrTmp;
fdWD = open("/dev/watchdog", O_RDWR); //设备⼀打开,看门狗也就出洞了。
for(;;)
{
write(fdWD, &chrTmp, 1); //任⼀指针就⾏了,因为内部并未使⽤;最后的数据⾮零就⾏了,因为内部只是判断是否零 来置狗为初值。
sleep(10); //在我的板上, 16秒后狗才出动,所以10喂⼀次也就⾏了。
}
}
Linux ⾃带了⼀个 watchdog 的实现,⽤于监视系统的运⾏,包括⼀个内核 watchdog module 和⼀个⽤户空间的 watchdog 程序。内核watchdog 模块通过 /dev/watchdog 这个字符设备与⽤户空间通信。⽤户空间程序⼀旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动⼀个1分钟的定时器(系统默认时间),此后,⽤户空间程序需要保证在1分钟之内向这个设备写⼊数据(俗称“定期喂狗”),每次写操作会导致重新设定定时器。如果⽤户空间程序在1分钟之内没有写操作,定时器到期会导致⼀次系统 reboot 操作(“狗咬⼈了”呵呵)。通过这种机制,我们可以保证系统核⼼进程⼤部分时间都处于运⾏状态,即使特定情形下进程崩溃,因⽆法正常定时“喂狗”,Linux系统在看门狗作⽤下重新启动(reboot),核⼼进程⼜运⾏起来了。多⽤于嵌⼊式系统。
打开 /dev/watchdog 设备(“开门放狗”):
int fd_watchdog = open("/dev/watchdog", O_WRONLY);
if(fd_watchdog == -1) {
int err = errno;
printf("\n FAILED to open /dev/watchdog, errno: %d, %s\n", err, strerror(err));
syslog(LOG_WARNING, "FAILED to open /dev/watchdog, errno: %d, %s", err, strerror(err));
}
每隔⼀段时间向 /dev/watchdog 设备写⼊数据(“定期喂狗”):
//feed the watchdog
if(fd_watchdog >= 0) {
static unsigned char food = 0;
ssize_t eaten = write(fd_watchdog, &food, 1);
if(eaten != 1) {
puts("\n FAILED feeding watchdog");
syslog(LOG_WARNING, "FAILED feeding watchdog");
}
}
关闭 /dev/watchdog 设备,通常不需要这个步骤:
close(fd_watchdog);
所需头⽂件:
#include
#include
#include
#include
linux内核中断之看门狗
⼀:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核⾃带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...
Linux编程之《看门狗进程》
Intro 当我们编写服务器代码时,为了让⾃⼰的服务器在意外崩溃时能够及时的重启,软件看门狗就显⽰出它的作⽤了,该看门狗进程是通过fork⼀个⼦进程(业务进程),⽗进程⼀旦捕获到了⼦进程的结束信号就重 ...
Linux 下安装服务器安全狗
基于S3C2440的嵌⼊式Linux驱动——看门狗(watchdog)驱动解读
本⽂将介绍看门狗驱动的实现. ⽬标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是⼀个定时器,当该定时器溢出前必须对看门狗进⾏"喂狗“,如 ...
[看门狗]基于Linux的嵌⼊式系统全程喂狗策略
Linux 软件看门狗 watchdog 喂狗
Linux ⾃带了⼀个 watchdog 的实现,⽤于监视系统的运⾏,包括⼀个内核 watchdog module 和⼀个⽤户空间的 watchdog程序.内核watchdog 模块通过 /dev/ ...
⼀个软件实现的Linux看门狗—soft_wdt
shell 之 ⽤linux定时任务crontab和watchdog.sh脚本做软件看门狗
1.简介 看门狗的作⽤是定期检测服务正常运⾏,如果发现服务不在了,会重新拉起服务:linux中可以利⽤系统的定时任务功能crontab定期的去执⾏watchdog.sh脚本,⽽watchdog.sh脚 ...
linux设备驱动归纳总结(⼗⼀):写个简单的看门狗驱动【转】
随机推荐
go:channel(未完)
注:1)以下的所有讨论建⽴在包含整形元素的通道类型之上,即 chan int 2)对于“
Haskell List相关操作
⼀.List中只能存放相同类型的元素. ++:将两个List合并成⼀个List.例,[1,2,3]++[4,5,6],结果是[1,2,3,4,5,6]. : :将“:”前⾯的元素添加
到“:”后⾯的L ...
java开源时间/⽇期库Joda-Time
任何企业应⽤程序都需要处理时间问题.应⽤程序需要知道当前的时间点和下⼀个时间点,有时它们还必须计算这两个时间点之间的路径.使⽤JDK 完成这项任务将⾮常痛苦和繁琐.现在来看看 Joda Time,⼀ ...
iOS NSRuntime机制
什么是Objective-C runtime? 简单来说,Objective-C runtime是⼀个实现Objective-C语⾔的C库.对象可以⽤C语⾔中的结构体表⽰,⽽⽅法(methods)可以 ...
@Autowired内部实现原理
jdk怎么使用@Autowiredprivate CustomerDao customerDao; public void addCustomer() { customerDao.add ...
netty(⼆) 创建⼀个netty服务端和客户端
服务端 NettyServer package fig; import com.zwty.channel.ServerInitializer;import io ...
jquery对象和javascript对象的console.log结果
array.push($("div").children("label")); console.log(array); 输出: 这个是jquery对象,如果在选 ...
Spring发送带附件邮件
下⾯是⼀个例⼦使⽤Spring通过Gmail SMTP服务器来发送电⼦邮件附件.为了包含附件的电⼦邮件,你必须使⽤ Spring的JavaMailSender 及MimeMessage 来代替 Mail ...
NOI 模拟赛
T1 Article 给 $m$ 个好串,定义⼀个字符串分割⽅案是好的当且仅当它分割出来的⼦串中"是好串的⼦串"的串长占原串串长超过 85%,定义⼀个好的分割⽅案的权值为这种分割⽅ ...
JS封装继承函数
function extend(child,parent){ var F=function(){} F.prototype=parent.prototype; child.prototype=new ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论