OpenWrt的开机启动服务(init scripts)

参考 https://wiki.openwrt.org/doc/techref/initscripts

以一个简单的例子来说明

#!/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
}

快速查询所有服务的自启动状态, 可以使用以下命令

[email protected]:~# 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**
时间: 2024-10-13 23:57:17

OpenWrt的开机启动服务(init scripts)的相关文章

非root用户执行开机启动服务脚 本

一.需求 centos6下面添加开机服务,例如开机启动supervisor服务,然后supervisor会负责拉起配置的进程,从而实现各种服务的开机重启. 二.原理需求 在centos6下面主要通过在/etc/init.d/下面添加服务脚本和chkconfig命令来完成添加启动服务 添加服务的启停脚本如果需要开机启动服务,或者通过service命令控制服务,必须在/etc/init.d/下面有对应服务的启停脚本,如果我们的服务为supervisor,那么在/etc/init.d/下面对应的启停脚

开机启动服务:chkconfig命令详解

1.查看系统运行级别 # cat /etc/inittab # Default runlevel. The runlevels used are:#   0 - halt (Do NOT set initdefault to this)#   1 - Single user mode#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)#   3 - Full multiuser mode#  

如何自己添加开机启动服务

在centos6如何添加开机启动服务 在centos6中启动某项服务都是用一条service的命令跟服务名来启动关闭(重启),或者查看状态的.只要安装某项服务直接service命令就可以执行三种状态,今天就跟我一起来看看怎么用一个简单的小脚本来用service命令执行它并设置成开机启动! #我实现写好了一个名叫mydeamon的脚本 首先看看我的脚本里都写了些什么: case $1 in [Rr][eE][sS][Tt][aA][Rr][Tt])         re        re调用重启

linux chkconfig添加开机启动服务

--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据: --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据: --level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕. 等级代号列表: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户

centOS7添加开机启动服务/执行脚本

centOS7添加开机启动服务/执行脚本 /etc/rc.d/rc.local  后追加shell脚本 1 开机启动服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): #设置jenkins服务为自启动服务 systemctl enable jenkins.service #启动jenkins服务 systemctl start jenkins.service 2 开机执行脚本 在centos7中增加脚本有两种常用的方法: 修改/etc/rc.d/rc/lo

Hortonworks HDP Sandbox定制(配置)开机启动服务(组件)

定制Hortonworks HDP开机启动服务可以这样做:本文原文出处: http://blog.csdn.net/bluishglc/article/details/42109253 严禁任何形式的转载,否则将委托CSDN官方维护权益! 找到文件:/usr/lib/hue/tools/start_scripts/start_deps.mf,Hortonworks HDP启动所有服务和组件的命令都在这个文件中,之所以把这些服务的启动命令写在了一个makefile中而不是一个shell文件,其实就

mysql不能开机启动服务

遇到一件非常郁闷的事情,mysql不能开机启动服务. 用到mysql数据库的时候,需要进入bin目录,手动启动mysqld.exe.非常,非常的不爽. 于是,写了一个小脚本.

设置自己的开机启动服务

在CentOS系统下,主要有两种方法设置自己安装的程序开机启动.1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. 1 #!/bin/sh 2 # 3 # This script will be executed *after* all the other init scripts. 4 # You can put your own initialization stuff in here if you don't 5 # want to

centos7之添加开机启动服务/脚本

一.添加开机启动脚本 #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parall