openwrt开机自启动脚本编写

一、原理

 #!/bin/sh /etc/rc.common指定了执行该脚本的方式(必须)
START=95 代表该脚本的启动顺序为95(注意,不是第95个执行的脚本,而是一个级别)。(数字越小,启动的越早)
start   # 启动服务
stop    # 停止服务
restart # 重启服务
reload  # 重新载入配置文件, 如果失败则重启
enable  # 启用开机自启动, 实际上是在/etc/rc.d/下创建S??和K??开头的软链
disable  # 禁用开机自启动, 实际上是删除/etc/rc.d/下对应的软链

启动顺序

START=STOP= 决定脚本启动时的次序. 启动时init.d会根据文件名顺序, 自动执行在/etc/rc.d中找到的脚本. 初始化脚本可以作为/etc/init.d/下文件的软链放置在/etc/rc.d/.
enable 和 disable 可以自动帮你创建对应的带序号的软链.
这个例子中START=10 会被链接到 /etc/rc.d/S10example, 启动时执行在START=9之后, 在START=11之前. 而STOP=15会被链接到 /etc/rc.d/K15example, 执行在STOP=14之后, 在STOP=16之前. 同一个启动数字的, 按字母顺序启动.

里面内容介绍

boot(),系统启动时会调用boot()
start_service()
stop_service() 
restart()

自定义的服务

EXTRA_COMMANDS="custom"
EXTRA_HELP="        custom  Help for the custom command"

custom() {
    echo "custom command"
    # do your custom stuff
}

EXTRA_COMMANDS="custom1 custom2"
EXTRA_HELP=<<EOF
    custom1 Help for the custom1 command
    custom2 Help for the custom2 command
EOF

custom1 () {
    echo "custom1"
    # do the stuff for custom1
}
custom2 () {
    echo "custom2"
    # do the stuff for custom2
}

procd风格的init启动
procd init脚本与sysv风格的启动脚本区别在于
procd方式下, 服务必须以前台方式运行
不同的shebang line: #!/bin/sh /etc/rc.common
指定procd方式的声明 USE_PROCD=1

#!/bin/sh /etc/rc.common

USE_PROCD=1

二、编写脚本
在/etc/init.d编写脚本

模板

test

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
 
START=95
boot() {
    # process user commands
    
}

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
#关闭实例
}

stop_service() {
  
}

restart() {
    stop
    start
}

三、开启自动调用

ln -s /etc/init.d/done /etc/rc.d/S95done
删除软链接取消自动调用
或者
/etc/init.d/test enable
/etc/init.d/test disable
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值