失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux shell 看门狗 Linux 下如何使用看门狗

linux shell 看门狗 Linux 下如何使用看门狗

时间:2020-09-07 17:23:38

相关推荐

linux shell 看门狗 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 设备(“开门放狗”):

intfd_watchdog=open("/dev/watchdog",O_WRONLY);

if(fd_watchdog==-1){

interr=errno;

printf("\n!!!FAILEDtoopen/dev/watchdog,errno:%d,%s\n",err,strerror(err));

syslog(LOG_WARNING,"FAILEDtoopen/dev/watchdog,errno:%d,%s",err,strerror(err));

}

每隔一段时间向 /dev/watchdog 设备写入数据(“定期喂狗”):

//feedthewatchdog

if(fd_watchdog>=0){

staticunsignedcharfood=0;

ssize_teaten=write(fd_watchdog,&food,1);

if(eaten!=1){

puts("\n!!!FAILEDfeedingwatchdog");

syslog(LOG_WARNING,"FAILEDfeedingwatchdog");

}

}

关闭 /dev/watchdog 设备,通常不需要这个步骤:

close(fd_watchdog);

所需头文件:

#include

#include

#include

#include

linux内核中断之看门狗

一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...

Linux编程之《看门狗进程》

Intro 当我们编写服务器代码时,为了让自己的服务器在意外崩溃时能够及时的重启,软件看门狗就显示出它的作用了,该看门狗进程是通过fork一个子进程(业务进程),父进程一旦捕获到了子进程的结束信号就重 ...

Linux 下安装服务器安全狗

1.网上下载服务器安全狗的软件包 32位和64位 wget/server_safedog_linux.html/safedog_linux32.tar ...

基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读

本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如 ...

[看门狗]基于Linux的嵌入式系统全程喂狗策略

转自:/erickhuang1989/article/details/8721548 在嵌入式系统中,为了使系统在异常情况下能自动恢复,一般都会引入看门狗电路. ...

Linux 软件看门狗 watchdog 喂狗

Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog程序.内核 watchdog 模块通过 /dev/ ...

一个软件实现的Linux看门狗—soft_wdt

soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: /sunmingbao/soft-wdt/archi ...

shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗

1.简介 看门狗的作用是定期检测服务正常运行,如果发现服务不在了,会重新拉起服务:linux中可以利用系统的定时任务功能crontab定期的去执行watchdog.sh脚本,而watchdog.sh脚 ...

linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】

本文转载自:/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...

随机推荐

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内部实现原理

@Autowiredprivate CustomerDao customerDao; public void addCustomer() { customerDao.add ...

netty(二) 创建一个netty服务端和客户端

服务端 NettyServer package ty.config; import ty.channel.ServerInitializer;import io ...

jquery对象和javascript对象的console.log结果

array.push($("div").children("label")); console.log(array); 输出: 这个是jquery对象,如果在选 ...

Spring发送带附件邮件

下面是一个例子使用Spring通过GmailSMTP服务器来发送电子邮件附件.为了包含附件的电子邮件,你必须使用Spring的JavaMailSender及MimeMessage来代替 Mail ...

NOI 模拟赛

T1 Article 给 $m$ 个好串,定义一个字符串分割方案是好的当且仅当它分割出来的子串中"是好串的子串"的串长占原串串长超过 85%,定义一个好的分割方案的权值为这种分割方 ...

JS封装继承函数

function extend(child,parent){ var F=function(){} F.prototype=parent.prototype; child.prototype=new ...

如果觉得《linux shell 看门狗 Linux 下如何使用看门狗》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。