参考
以一个简单的例子来说明
#!/bin/sh /etc/rc.common# Example script# Copyright (C) 2007 OpenWrt.org START=10STOP=15 start() { echo start # commands to launch application} stop() { echo stop # commands to kill application }
第一行shebang #! 使用 /bin/sh /etc/rc.common 作为脚本解释器并在执行脚本前调用 main 和检查脚本
公用的 init script 方法有
start # 启动服务stop # 停止服务restart # 重启服务reload # 重新载入配置文件, 如果失败则重启enable # 启用开机自启动disable # 禁用开机自启动
脚本中 start() 和 stop() 是必须的
启动顺序
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()方法时, 系统启动时会调用boot()而不是start()
boot() { echo boot # commands to run on boot}
你可以使用EXTRA_COMMANDS和EXTRA_HELP设置自定义的服务方法
EXTRA_COMMANDS="custom"EXTRA_HELP=" custom Help for the custom command" custom() { echo "custom command" # do your custom stuff}
多个自定义方法的添加
EXTRA_COMMANDS="custom1 custom2 custom3"EXTRA_HELP=<
快速查询所有服务的自启动状态, 可以使用以下命令
root@OpenWrt:~# for F in /etc/init.d/* ; do $F enabled && echo $F on || echo $F **disabled**; done/etc/init.d/boot on/etc/init.d/bootcount on/etc/init.d/cron on/etc/init.d/dnsmasq on/etc/init.d/done on/etc/init.d/dropbear on/etc/init.d/firewall on/etc/init.d/fstab on/etc/init.d/gpio_switch on/etc/init.d/led on/etc/init.d/log on/etc/init.d/network on/etc/init.d/odhcpd on/etc/init.d/rpcd on/etc/init.d/samba on/etc/init.d/shadowsocks-libev on/etc/init.d/sysctl on/etc/init.d/sysfixtime on/etc/init.d/sysntpd on/etc/init.d/system on/etc/init.d/transmission on/etc/init.d/uhttpd on/etc/init.d/umount **disabled**/etc/init.d/wifidog **disabled**