OpenWrt的中procd自己脚本编写

37 --> 详解 OpenWRT系统框架基础软件模块之 procd 一、简介 OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。 OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。 procd 部分源码内容涉 阅读详情
#!/bin/sh /etc/rc.common


START=90
STOP=90
SERVICE=app


USE_PROCD=1


start_service() 

{

    procd_open_instance
    procd_set_param command /usr/sbin/app
    procd_set_param respawn
    procd_close_instance

}

service_triggers()
{
    procd_add_reload_trigger "config_file_name"
}

reload_service() 

{

}

stop_service() 

{

}

解释

1.  start_service() 为注册服务到procd中,如果自己的应用程序没有配置文件,只要实现start_service()就好, procd_set_param设置设置好多参数,command为自己的应用路径, respawn可以检测自己的应用,如果挂掉可以重启,也可以设置重启间隔,其它参数可以自己查阅。

2. stop_service()  这个时procd kill自己的应用程序后调用的,若果你的应用程序关掉后,需要一些清理工作,需要实现这个。

3. service_triggers() 如果自己的应用需要关联一个配置文件test,(需要放在/etc/config/目录下),可以跟踪文件的修改情况,如果这个文件有改变,就调用reload_service().在service_triggers也可以添加跟踪网络的修改,也可以同时跟踪多个配置文件。

4. reload_service() 配置文件改变后,需要调用这个函数,可以根据自己需要实现功能。

注:start和reload区别是,start一般是指应用程序启动, reload一般是指只是重新加载与配置文件改变相关的部分,不把整个应用程序重新启动。这种方式应该是推荐的,如果你再reload里重新启动应用也是可以的。


一般配置文件文件改变是通过MD5值来判断的,/sbin/reload_config,内容如下

#!/bin/sh

MD5FILE=/var/run/config.md5
[ -f $MD5FILE ] && {
for c in `md5sum -c $MD5FILE 2>/dev/null| grep FAILED | cut -d: -f1`; do
ubus call service event "{ \"type\": \"config.change\", \"data\": { \"package\": \"$(basename $c)\" }}"
done
}
md5sum /etc/config/* > $MD5FILE

就是调用procd注册的service event事件, 例如网页修改配置后,会通过rpcd调用/sbin/reload_config

OpenWRT之procd服务 简介 Openwrt 支持模块化编程,增加新功能非常简单。但是一些基础模块必须包含, 它们是OpenWrt核心。如:实用基础库libubox、系统总线ubus、网络接口管理模块netifd、核心工具模块ubox、服务管理模块procd。 在OpenWRT系统内init进程被procd取代,procd作为父进程可以监控子进程的状态。一旦子进程退出后即可在某一个时刻尝试进行重启进程。它通过init脚本来将进程信息加入到procd的数据库中来管理进程启动,这是通过ubus总线调用来实现,可以防止进程的重复启动调用 阅读详情

相关推荐

手把手教你用procd管理OpenWRT服务:从配置文件到热插拔实践

本文详细介绍了如何在OpenWRT系统中使用procd服务管理框架来部署和管理自定义服务。内容涵盖从编写基础procd服务脚本、配置进程监控与自动重启,到处理USB设备插拔等热插拔事件的实践。通过具体示例,指导开发者利用procd的声明式配置和事件驱动能力,构建健壮且易于维护的路由器服务,并深入探讨了服务依赖管理、UCI集成及故障排查等高级主题。

threejs5artist的博客 1021

openwrt procd init脚本用法总结

openwrt procd init脚本使用

to_be_better_wen的博客 7326

OpenWRT 实战指南:如何高效管理开机自启动服务

本文详细介绍了OpenWRT系统中如何高效管理开机自启动服务,包括基础概念、传统init.d脚本编写、procd服务管理进阶以及服务依赖与启动顺序优化。通过实战案例和最佳实践,帮助用户掌握OpenWRT自启动服务的管理技巧,提升系统运维效率。

weixin_29218963的博客 700

OpenWrt开发必备软件模块——进程管理服务procd

procd的进程管理功能主要包含3个部分。六、编写一个procd启动脚本。procd.sh的函数。五、rc.common。四、procd.sh。

szembed的博客 2140

10-Openwrt procd守护进程

通常的嵌入式系统均有一个守护进程,该守护进程监控系统进程的状态,如果某些系统进程异常退出,将再次启动这些进程。procd 就是这样一个进程,它是使用C语言编写的,一个新的 OpenWrt 进程管理服务。它通过init脚本来将进程信息加入到 procd 的数据库中来管理进程启动,这是通过ubus总线调用来实现,可以防止进程的重复启动调用。 procd 的进程管理功能主要包含 3 个部分。 re...

Creator_Ly的博客 3836

到底什么是电源的斜波补偿,电源芯片CS引脚作用,一文讲清楚!

上文有提到电流环,其实电流环再细分也有很多模式,用的最多的是峰值电流模式峰值电流模式调节工作原理如下:(1)当输出负载增大时,输出电压降低,因此,Vc 增大,线性增加的电感电流只有升高到更大的值才能使 PWM 电流比较器翻转,开关管导通的时间增长,占空比增加,输入功率增加,因此输出电压增加,当输出电压增加到调节的范围内时,系统保持平衡。

jwgdhuwdhg的博客 1万+

OpenWRT下procd服务实战:手把手教你编写自定义守护进程脚本

本文是OpenWRT下procd服务的实战指南,手把手教你编写自定义守护进程脚本。通过一个环境数据采集服务的完整案例,详细拆解了procd脚本的结构、核心函数编写、自动重启(respawn)策略配置以及配置热重载等高级功能。文章还提供了服务监控、调试与常见问题排查的实用方法,帮助开发者将应用无缝融入OpenWRT生态系统,实现与原生服务同等级别的稳定生命周期管理。

g9h0i1的博客 604

lammps建模(电解液)opls-aa力场的基本流程

lammps建模(电解液)opls-aa力场的基本流程

syj0922的博客 2133

给OpenWrt写个C语言小插件:从零到一搞定UCI配置和procd守护进程

本文详细介绍了如何为OpenWrt开发C语言插件,涵盖UCI配置解析和procd守护进程集成等核心功能。通过搭建SDK环境、设计服务架构、实现配置热加载和进程监控,帮助开发者快速构建生产级服务插件,适用于软路由和物联网设备。

weixin_30216561的博客 368

Ubuntu18.04环境搭建与疑难解析:从零复现YOLO-6D姿态估计算法

本文详细介绍了在Ubuntu18.04环境下从零开始复现YOLO-6D姿态估计算法的完整流程,包括系统配置、Conda环境搭建、PyTorch安装、依赖项管理、源代码获取、数据集准备以及训练验证过程。针对Singleshotpose算法的特殊需求,提供了详细的疑难解析和性能优化技巧,帮助开发者高效完成算法复现和应用部署。

weixin_30369041的博客 456

C#中使用OpenCV的常用函数

c# opencv 常见操作

大黄鸭在发光的专栏 1079

智能家居背后的守护者:OpenWRT自启动服务实战解析

本文深入解析了OpenWRT在智能家居网关中的自启动服务实践,详细介绍了procd服务管理框架、目录结构及服务脚本编写技巧。通过实战案例展示了如何优化服务启动顺序和依赖管理,提升智能家居系统的可靠性和性能,是OpenWRT开发者的实用指南。

js777的博客 565

LLM评测框架Ragas:测试RAG的性能出现TimeoutError()的解决办法(Ragas+langchain+ollama)

无奈之下,自己找到了一个解决办法,在ragas支持的llm类库中加了一个如下的类,支持ollama、langchian_ollama使用ragas测试报错的问题。可以将如上的库放到你的ragas的系统库的llms目录下,然后修改__init__.py如下。最近用ragas测试rag的性能,发现老出现TimeoutError()的错误。这是一个临时的解决办法,具体等待官方给出最终的解决方案。后来发现官方也没有尽快支持的计划。然后就可以用如下代码进行一些验证。

Criss@陈磊 665

OpenWrt 自启动脚本进阶指南:从原理到实战

本文深入解析OpenWrt自启动脚本机制,详细讲解/etc/init.d和/etc/rc.d目录的作用与区别,提供从基础到高级的脚本编写指南。通过实战案例展示如何创建可靠的自启动服务,包括启动顺序控制、权限管理和日志调试等关键技巧,帮助开发者掌握OpenWrt开机自启动的核心技术。

weixin_29294975的博客 355

量产导入 | 产品可靠性测试标准完整大集合(JEDEC/IEC/SAE…)

产品可靠性测试是产品质量保证中的重要一环, 包含有Pre-con, aging(寿命)和ESD(静电)等, 下面就收集了权威标准JEDEC全系列, 请参照如下 同时也附上其它的可靠性标准供大家参考及交叉理解, 可能侧重点不同, 大家可以参考下。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1663

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4585

Tina5.0系统开发秘籍:如何让你的应用程序在T113开发板上电自启动

本文详细解析了在全志T113开发板上,如何为Tina5.0系统配置应用程序实现上电自启动。文章深入探讨了Tina5.0基于OpenWrt的启动流程,提供了从应用程序打包、编写健壮的init.d自启动脚本,到处理复杂服务依赖与启动顺序的完整实战指南,帮助开发者打造流畅可靠的工业级启动体验。

herb5的博客 377

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Qwen2.5-VL-7B-Instruct快速上手:使用curl命令行调用图文API接口示例

本文介绍了如何在星图GPU平台上自动化部署Qwen2.5-VL-7B-Instruct镜像,实现多模态图文处理功能。该模型支持图像和文本输入,通过简单的curl命令行调用API接口,可快速完成图片内容描述、多轮对话等任务,适用于智能客服、内容审核等场景。

weixin_42356162的博客 591

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

美胸-年美-造相Z-Turbo Gradio定制化:修改UI标题、添加水印、导出格式设置

本文介绍了如何在星图GPU平台上自动化部署美胸-年美-造相Z-Turbo镜像,实现定制化的AI图片生成服务。通过Gradio界面,用户可轻松修改UI标题、添加水印并设置导出格式,适用于快速生成高质量的美胸年美风格图片,提升内容创作效率与专业性。

weixin_36289813的博客 166

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MT7628实战指南:构建开机自启的TCP串口网关(ser2net集成与配置)

本文详细介绍了如何在MT7628嵌入式处理器上构建开机自启的TCP串口网关,重点集成了ser2net服务并优化配置。通过OpenWrt开发环境搭建、ser2net深度配置、自启动方案实现及工业场景优化实践,帮助开发者低成本实现串口设备网络化,适用于工业物联网等应用场景。

weixin_30383279的博客 564

用测试镜像配置开机自启,少走弯路的正确姿势

本文介绍了如何在星图GPU平台上自动化部署「测试开机启动脚本」镜像,实现Linux系统服务的可靠开机自启。该镜像专为轻量级嵌入式环境设计,适用于IoT设备初始化、边缘服务自动拉起及系统健康检查等典型场景,显著提升部署稳定性和运维效率。

weixin_28487725的博客 193

OpenWrt 基础软件模块之procd

OpenWrt 基础软件模块之procd Openwrt 支持模块化编程,增加新功能非常简单。但是一些通用的基础模块必须包含,他们是OpenWrt核心。 如:实用基础库libubox、系统总线ubus、网络接口管理模块netifd、核心工具模块ubox、服务管理模块procd。 服务管理模块procd 通常的嵌入式系统均有一个守护进程,该守护进程监控系统进程的状态,如果某些系统进程异常退出,将再次启动这些进程。procd 就是这样一个进程,它是使用C语言编写 的,一个新的OpenWrt进程管理服务。

hzlarm的博客 1万+

【openwrt】【procd】Openwrt系统启动流程分析

在Openwrt系统中执行ps命令可以看到 1号进程就是procd但实际上内核启动完成后,运行的第一个用户进程并不是procd,在运行procd之前还执行了其他准备工作,换句话说,procd并不一开始就是“老大”,它只是最终接替了老大的位置。

分享嵌入式Linux技术知识 3691

openwrt之procd进程管理服务

RPC daemon—rpcd,OpenWrt进程管理服务 为每个软件编写一个守护程序,并独立运行它们并没有效率。这就是为什么rpcd被开发出来的原因。这是一个很小的守护程序,支持使用普通API的插件,动态注册,将自己的应用程序加入rpcd守护管理服务。 以下示例,实现功能: 将程序/usr/bin/main加入procd进行管理,上电自动启动 当main异常退出,自动重新启动。 同时监测配置文件/etc/config/mqtt是否发生变化,如果发生变化,则自动重启该进程。 将以下脚本,加入.

Eric 3868

Openwrt procd守护进程

通常的嵌入式系统均有一个守护进程,该守护进程监控系统进程的状态,如果某些系统进程异常退出,将再次启动这些进程。procd 就是这样一个进程,它是使用C语言编写的,一个新的 OpenWrt 进程管理服务。它通过init脚本来将进程信息加入到 procd 的数据库中来管理进程启动,这是通过ubus总线调用来实现,可以防止进程的重复启动调用。 procd 的进程管理功能主要包含 3 个部分。 reload_config,检查配置文件是否发生变化,如果有变化则通知 procd 进程。 procd,守护进程.

wangwulin250的博客 3438
上一篇: Ubuntu自带的软件制作U盘启动盘
下一篇: OpenWrt的rpcd的使用
wdsfup
博客等级 码龄20年 31粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值