天天看點

php 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,%s",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 軟體看門狗 watchdog的使用就介紹到這,有什麼問題可以留言

總結

如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。

本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。