使用procd执行进程

在openwrt系统内init进程被procd取代,procd作为父进程可以监控子进程的状态。一旦子进程退出后即可在某一个时刻尝试进行重启进程。在op系统内使用procd监控的有uhttpd,netifd等。在/etc/init.d/文件夹内带有USE_PROCD=1标志,下面就介绍如何让procd启动某一个应用程序 我的应用程序名是binloader, 直接上脚本代码

!/bin/sh /etc/rc.common
Copyright (C) 2008 OpenWrt.org
START=98
执行的顺序,按照字符串顺序排序并不是数字排序
USE_PROCD=1
使用procd启动
BINLOADER_BIN="/usr/bin/binloader"
start_service() {
procd_open_instance
#创建一个实例, 在procd看来一个应用程序可以多个实例
#ubus call service list 可以查看实例
procd_set_param respawn
#定义respawn参数,告知procd当binloader程序退出后尝试进行重启
procd_set_param command "$BINLOADER_BIN"
binloader执行的命令是"/usr/bin/binloader", 若后面有参数可以直接在后面加上

procd_close_instance
#关闭实例
}
start_service 函数必须要重新定义
stop_service() {
rm -f /var/run/binloader.pid
}
stop_service重新定义,退出服务器后需要做的操作
restart() {
stop
start
}

必须指出来的是,被procd执行的程序不能是daemon后台程序,因为后台程序的主进程退出后在procd看来就是程序退出了,然后会进入respawn流程,之后重复启动和退出。
最后失效了
procd: Instance binloader::instance1 s in a crash loop 6 crashes, 0 seconds since last crash
原文:http://m.blog.csdn.net/liangdsing/article/details/53906445


本文转自 Linux_woniu 51CTO博客,原文链接:http://blog.51cto.com/linuxcgi/2045560


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值