Linux上的Watchdog是一個滿常用來監控系統的服務,可以透過掛載模組後產生硬體的watchdog裝置(/dev/watchdog),掛載方式可以參考本文最下面的鏈結。
其中需要:
1. 設定watchdog的module掛載
2. 啟用module
而在Node.js中需要連結/dev/watchdog的方法,是open該file後,持續的在所規定的時間內丟一個特定字串給它(/dev/watchdog),下面是node.js實作的方式:
var fs = require('fs');
var data = 0;
var WDIOC_KEEPALIVE = 2147768069;
var WDIOC_SETTIMEOUT = 3221509894;
var WDIOC_GETTIMEOUT = 2147768071;
var buf = new Buffer(4);
fs.open('/dev/watchdog', 'r+', function(err, fd){
if(err) console.log('error:', err);
setInterval(function() {
console.log('write file...');
fs.write(fd, WDIOC_KEEPALIVE, buf, function(err){
if(err) console.log('error:', err);
})
}, 2000);
});
當程式執行起來後,將會每2秒鐘到該裝置寫一塊資料,當成是關閉後,則會觸動系統重新開機的動作... 這個用途在當系統發生問題時候,需要重新開機時,非常有用唷 :D
參考:http://www.switchdoc.com/2014/11/reliable-projects-using-internal-watchdog-timer-raspberry-pi/