通常的嵌入式系统均有一个守护进程,该守护进程监控系统进程的状态,如果某些系统进程异常退出,将再次启动这些进程。procd 就是这样一个进程,它是使用C语言编写的,一个新的 OpenWrt 进程管理服务。它通过init脚本来将进程信息加入到 procd 的数据库中来管理进程启动,这是通过ubus总线调用来实现,可以防止进程的重复启动调用。
procd 的进程管理功能主要包含 3 个部分。
- reload_config,检查配置文件是否发生变化,如果有变化则通知 procd 进程。
- procd,守护进程,接收使用者的请求,增加或删除所管理的进程,并监控进程的状态,如果发现进程退出,则再次启动进程。
- procd.sh,提供函数封装procd提供系统总线方法,调用者可以非常便利的使用procd 提供的方法。
root@zihome:/etc/init.d# cat /var/run/config.md5
b9f0f9179b5b407ff85430da41877ba3 /var/run/config.check/dhcp
ce8e9fffa77a896c43cdeb2b83dede88 /var/run/config.check/dropbear
92a19521dd5c8cacd08e64e2785d94b1 /var/run/config.check