程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Linux 軟件看門狗 watchdog運用引見

Linux 軟件看門狗 watchdog運用引見

編輯:關於C++

Linux 軟件看門狗 watchdog運用引見。本站提示廣大學習愛好者:(Linux 軟件看門狗 watchdog運用引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Linux 軟件看門狗 watchdog運用引見正文


背景:

[email protected]:/usr/local/php# ps aux|grep watchdog

root 6 0.0 0.0 0 0 ? S Aug28 4:50 [watchdog/0]
root 10 0.0 0.0 0 0 ? S Aug28 4:11 [watchdog/1]
root 14 0.0 0.0 0 0 ? S Aug28 3:58 [watchdog/2]
root 18 0.0 0.0 0 0 ? S Aug28 3:36 [watchdog/3]

附:

最復雜的裝置教程(CentOS)

yum install watchdog -y
modprobe softdog
chkconfig watchdog on
/etc/init.d/watchdog start

配置看門狗順序,開機自動運轉

chkconfig watchdog on

啟動看門狗

sudo /etc/init.d/watchdog start

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 <unistd.h>
#include <sys/stat.h>
#include <syslog.h>
#include <errno.h>

關於Linux 軟件看門狗 watchdog的運用就引見到這,有什麼問題可以留言

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved