openwrt 中procd


https://wiki.openwrt.org/doc/techref/procd

 

ProcdOpenwrt的進程管理守護進程(process management daemon,它與初始化腳本(/etc/init.d/*)保持聯系,當進程相關聯的配置文件更改時,會觸發procd去重啟或啟動腳本。Procd代替了原本的Hotplug2

 

備注:

Hotplug2執行位於/etc/hotplug.d目錄下的腳本。每次接口updown,都會調用/etc/hotplug.d/iface/目錄下的所有腳本,以字母順序調用。為了遍歷,將每個腳本前面加入數字前綴。這就是為什么腳本名字會像這樣:10-route, 20-firewall

 

如何寫一個procd調用的初始化(init)腳本

1、要以下面開頭:

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

USE_PROCD=1

 

2、腳本中需要包含啟動進程使用的函數 start_service() 和 停用進程的函數 stop_service()

 

增加觸發Procd

1、在init腳本中增加 service_triggers() 函數。

   service_triggers()

{

procd_add_reload_trigger   “uci-file-name”

}

其中uci-file-name 對應 /etc/config下面的配置文件。

procd_add_reload_trigger 函數在 procd.sh 腳本中。

2、重新加載更改后的配置文件,調用函數reload_service()

   reload_service()

   {

       echo  “Explicitly  restarting service,  are you sure you need this ?”

       stop

       start

   }

 

Init 腳本如何起作用

所有的參數都被封裝進json,通過ubus傳送到procd

 

調試

設置 PROCD_DEBUG=1后,可以查看到(procd 調用init腳本時)更多的調試信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM