参考
以一个简单的例子来说明
- #!/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
- }
第一行 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=<<EOF
- custom1 Help for the custom1 command
- custom2 Help for the custom2 command
- custom3 Help for the custom3 command
- EOF
- custom1 () {
- echo "custom1"
- # do the stuff for custom1
- }
- custom2 () {
- echo "custom2"
- # do the stuff for custom2
- }
- custom3 () {
- echo "custom3"
- # do the stuff for custom3
- }
快速查询所有服务的自启动状态, 可以使用以下命令
- : ~#
- 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***/
来源: