10 Openwrt procd守護程序

2021-09-24 17:34:01 字數 3748 閱讀 4015

通常的嵌入式系統均有乙個守護程序,該守護程序監控系統程序的狀態,如果某些系統程序異常退出,將再次啟動這些程序。procd 就是這樣乙個程序,它是使用c語言編寫的,乙個新的 openwrt 程序管理服務。它通過init指令碼來將程序資訊加入到 procd 的資料庫中來管理程序啟動,這是通過ubus匯流排呼叫來實現,可以防止程序的重複啟動呼叫。

procd 的程序管理功能主要包含 3 個部分。

e2e3d1e8532386200a708f0c6837830c /var/run/config.check/zqos如果在自己的啟動指令碼中定義了 use_procd 那就呼叫這些函式。在 rc.common 中重

新定義了 start 函式,相當於過載了這些函式。

函 數含 義

start_service

向 procd 註冊並啟動服務,是將在 services 所管理物件裡面增加了一項

stop_service

讓 procd 解除註冊,並關閉服務, 是將在 services 中的管理物件刪除

service_triggers

配置檔案或網路介面改變之後觸發服務重新讀取配置

service_running

查詢服務的狀態

reload_service

重啟服務,如果定義了該函式,在 reload 時將呼叫該函式,否則再次呼叫 start 函式

service_started

用於判斷程序是否啟動成功

舉例:通常有兩行內容是固定的,第一

行表示使用「/etc/rc.common」來解釋指令碼。

第二行內容設定 use_procd 變數為 1,表示使

用 procd 來管理程序

(1)pprocd_open_instance 開始增加乙個服務例項。

(2)procd_set_param 設定服務例項的引數值,通常會有以下幾種型別的引數。

(3)procd_close_instance 完成程序例項的增加。

vim /etc/init.d/zdetect

#!/bin/sh /etc/rc.common

use_procd=1

start=88

stop=92

start_service()

procd_close_instance

}

vim /etc/init.d/zboard

#!/bin/sh /etc/rc.common

use_procd=1

start=18

stop=82

start_service()

if [ -f /tmp/status/wan_port_status ]; then

wan_status=$(cat /tmp/status/wan_port_status)

fiprocd_set_param command /usr/bin/zboard -p $wan_port -s $wan_status

procd_set_param respawn

[ -e /proc/sys/kernel/core_pattern ] &&

procd_close_instance

}stop_service() '`

if [ "$" != "" ];then

kill -9 $

fi}

(4)procd_add_reload_trigger,增加配置檔案觸發器,每次配置檔案的修改,如果呼叫了reload_config時,當前例項都被重啟。有乙個可選的引數為配置檔案名稱。其實它在內部是呼叫procd_open_trigger、procd_add_config_trigger和procd_close_trigger這3個函式來增加觸發器。

(5)procd_open_validate,開啟乙個驗證陣列,是和 procd_close_validate 函式一起使用。

(6)procd_close_validate,關閉乙個驗證陣列。示例 8-9 是軟體包 firewall使用procd來對防火牆配置的觸發器和驗證。

(7)procd_open_service(name, [script]),至少需要乙個引數,第乙個引數是例項名稱,第二個引數是可選引數為啟動指令碼。該函式僅在在rc.common 中呼叫,用於建立乙個新的procd程序服務訊息。

(8)procd_close_service,該函式不需要引數,僅在 rc.common 中呼叫,完成程序管理服務的增加。

(9)procd_kill,殺掉服務例項(或所有的服務例項)。至少需要乙個引數,第乙個引數是服務名稱,通常為程序名,第二個是可選引數,是程序例項名稱,因為可能有多個程序示例,如果不指定所有的例項將被關閉。該函式在 rc.common 中呼叫,使用者從命令列呼叫 stop 函式時會使用該函式殺掉程序。

(10)uci_validate_section,呼叫 validate_data 命令註冊為驗證服務。在配置發生改變後對配置檔案的配置項合法性進行校驗。驗證服務是在程序啟動時通過 ubus 匯流排註冊到procd程序中。輸入以下命令,可以看到系統所有註冊的驗證服務。

linux環境程式設計 孤兒程序,殭屍程序,守護程序

前面的 程序控制我們已經陸續的介紹啦,今天介紹一下孤兒程序,殭屍程序,還有守護程序 一.孤兒程序 父程序 先於 子程序結束,那子程序就成為了孤兒程序,父程序的資源被 init程序 沒有結束的子程序就被init程序領養,init程序可以被看程是孤兒院的院長。二.殭屍程序 父程序 還在執行 子程序已經結...

進製轉化進10進製數

option explicit private sub form click dim st as integer,dem as long st inputbox 輸入乙個十六進製制數 dem convert st print st dem end sub private function conve...

10億記錄的分割槽討論,高手進

我們做的是乙個問卷調查系統,每天新增的資料量在300萬 500萬 答卷表 總資料量已經接近10億。答卷表結構 qid 問卷id jid 參與id tid 題目id aid 答案id 已經用sql server針對qid做了分割槽,但是伺服器還是有點扛不住。因為資料經常需要做統計分析 統計每個選項被選...