Openwrt启动项修改为procd管理

原进程启动方式,通过/etc/ini.d/hostapd启动。

启动脚本:

#!/bin/sh /etc/rc.common
START=15
boot() {
	if  [ -e "/var/run/hostapd-global.pid" ]
	then
		kill $(cat /var/run/hostapd-global.pid) &> /dev/null
		rm /var/run/hostapd-global.pid &> /dev/null
	fi
	hostapd -g /var/run/hostapd/global -B -s -P /var/run/hostapd-global.pid
}

因为这种启动方式的进程,是作为Daemon进程常驻后台,如果出现挂死,则也不会被重启。

为了解决这个问题,计划将这个启动方式调整为procd管理。

#!/bin/sh /etc/rc.common
START=15
USE_PROCD=1
PROG="/usr/sbin/hostapd"
start_service(){
        procd_open_instance
        if  [ -e "/var/run/hostapd-global.pid" ]
        then
                kill `pidof hostapd` &> /dev/null
                rm /var/run/hostapd-global.pid &> /dev/null
        fi
        procd_set_param command  $PROG -g /var/run/hostapd/global -s -P /var/run/hostapd-global.pid
        procd_set_param respawn
        procd_set_param limits core="unlimited"
        echo "/tmp/log/%e.%p.%s.%t.core" > /proc/sys/kernel/core_pattern
        procd_close_instance
}

对于上面的调整,主要说明一下修改:

  1. 添加 USE_PROCD=1 ,将进程启动方式调整为PROCD

  2. procd方式创建服务,通过command命令启动时,删除了 -B(daemon)。

    测试中发现添加该参数,会导致出现启动多个进程。(测试中发现有5个)。

    同时,添加该参数后,手动kill掉进程后,无重启操作。

    猜测原因: 作为后台daemon进程时,脱离了procd的管理。所以无法生效。

  3. 设置了core文件生成名称。

  4. 修改过程中,因为添加了PROCD管理启动,测试了是否影响了启动顺序。

    经过验证,对启动时间无影响,均为procd启动,只是之前的启动方式不会由procd来管理。后面的启动方式是通过procd管理的。

注意事项

​ 今天在测试procd重启进程时,发现重启5次之后,第6次进程被kill掉是没有重启的。

​ 查看了资料,设置respawn时,有参数配置这个重启次数,默认是5次。如果没有配置,那就是按照默认值处理。

​ 这也就是我这边重启5次之后procd再没有重启的原因。

参考资料

10-Openwrt procd守护进程: https://www.jianshu.com/p/acd2ccb5ea8d
OpenWrt开发:25—软件模块之procd: https://blog.csdn.net/qq_41453285/article/details/102622557
openwrt监控程序(守护进程): https://www.cnblogs.com/cxt-janson/p/13084128.html
OpenWrt的开机启动服务(init scripts): https://www.cnblogs.com/milton/p/6345621.html
OpenWrt开发:17—软件启动机制: https://blog.csdn.net/qq_41453285/article/details/102545624
openwrt创建procd守护进程注意事项: https://blog.csdn.net/kakabuqinuo/article/details/98200884

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值