OpenWRT

作者: RootWang | 来源:发表于2020-07-08 11:32 被阅读0次

初始化

init.d

Openwrt 使用自己的初始化脚本系统,所有的初始化脚本位于 /etc/init.d 目录下。

任何一个初始化脚本必须包含基本的 start() 和 stop() 函数。当系统启动或用户拉起对应的进程时会调用 start() 函数,而 start() 函数的最终解析是在脚本 /etc/rc.common 中。

#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org

START=10
STOP=15
 
start() {        
        echo start
        # commands to launch application
}                 
 
stop() {          
        echo stop
        # commands to kill application 
}

第一行使用 /bin/sh /etc/rc.common 作为脚本解释器并在执行脚本前调用 main 和检查脚本

初始化脚本中的 enable() 和 disable() 函数,功能用于创建或删除 /etc/rc.d 下脚本的链接,来决定当系统启动(boot)时是否直接拉起此进程。

备注:系统启动脚本是 /etc/init.d/rcS . 系统脚本启动的顺序是以“S+数字”后面的数字来巨额额定的。例如: S10boot 脚本会在 S50cron 脚本之前启动。

Procd

Procd:Openwrt的进程管理守护进程(process management daemon),它与初始化脚本(/etc/init.d/*)保持联系

写一个procd调用的初始化(init)脚本

#!/bin/sh /etc/rc.common
# Copyright (C) 2007-2011 OpenWrt.org

START=12

USE_PROCD=1

start_service() {
    logger "start XXXX server ......"
    procd_open_instance
    procd_set_param command /usr/local/bin/
    procd_set_param respawn
    procd_close_instance
}
  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里重新启动应用也是可以的。

相关文章

网友评论

      本文标题:OpenWRT

      本文链接:https://www.haomeiwen.com/subject/vtwqcktx.html