工作原理:当在命令行执行reload_config时,会对系统中的所有配置文件生成MD5值,并且和应用程序使用的配置文件MD5值进行比较(对/var/run/config.md5文件进行比较),如果不同就通过ubus总线通知procd配置文件发生改变,如果应用程序在启动时,向procd注册了配置触发服务,那就将调用 reload函数...
procd 就是这样一个进程,它是使用C语言编写的,一个新的 OpenWrt 进程管理服务。它通过init脚本来将进程信息加入到 procd 的数据库中来管理进程启动,这是通过ubus总线调用来实现,可以防止进程的重复启动调用。 procd 的进程管理功能主要包含 3 个部分。 reload_config,检查配置文件是否发生变化,如果有变化则通知 proc...
第二行内容设置 USE_PROCD 变量为 1,表示使 用procd 来管理进程 (1)pprocd_open_instance 开始增加一个服务实例。 (2)procd_set_param 设置服务实例的参数值,通常会有以下几种类型的参数。 command: 服务的启动命令行。 respawn: 进程意外退出的重启机制及策略,它需要有 3 个设置值。第一个设置为判断异常失...
/bin/sh /etc/rc.common USE_PROCD=1 START=18 STOP=82 start_service() { # 启动服务 procd_open_instance procd_set_param command /usr/bin/python /muxiu/muxiu/muxiu/test.py # 全部关联的文件必须是绝对路径,否则会找不到文件 procd_set_param respawn procd_close_instance } stop_service() { ...
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下面的配置文件。
现在OpenWrt已经引入了procd机制,写procd脚步的时候会有点不一样。首先需要在init脚步中赋值USE_PROCD为1。 USE_PROCD=1 当init脚步以action为start运行时,就不再是调用start()函数 ,而是start_service()函数。在start_service()函数中,经典的行为为:读取uci config文件,生成对应 配置文件,使用procd.sh的接口注册...
> During boot, procd_inittab_run("sysinit") is called in Step1, which calls > add_initd(). add_initd() would add an entry in timeouts list, whose callback > function is to execute an rc.d/S* script. > > When the while loop goes back to Step1 again, the timeouts list would...
前面说到reboot时是发送了一个信号给1号进程, 而1号进程procd的这段出问题代码,正是在信号处理函数中被调用的。 搜下信号处理 死锁之类的关键词,就可以搜到很多人前仆后继地踩了这个坑。信号的到来会打断正常的执行流程,转而执行异步信号处理函数,由于不确定被打断的位置,所以异步信号处理函数的编写是很有讲究的...
http://wiki.openwrt.org/doc/techref/procdprocd进程管理 http://wiki.openwrt.org/inbox/procd-init-scriptsprocd脚本编写 (结尾还有示例) http://wiki.openwrt.org/doc/techref/hotplug热插介绍 https://forum.openwrt.org/viewtopic.php?id=49599openwrt-systemd ...
CONFIG_PACKAGE_procd=y CONFIG_PACKAGE_qos-scripts=y CONFIG_PACKAGE_resolveip=y CONFIG_PACKAGE_rpcd=y CONFIG_PACKAGE_swconfig=y CONFIG_PACKAGE_ubox=y CONFIG_PACKAGE_ubus=y CONFIG_PACKAGE_ubusd=y CONFIG_PACKAGE_uci=y CONFIG_PACKAGE_zram-swap=y ...