0%

Linux开机启动项目录rc.d

本文以/init.d/redis-server-2脚本为例,介绍如何自定义开机启动项。

/etc/init.d目录下是所有的启动脚本,我们可以通过以下命令来运行。

1
/etc/init.d/脚本名 参数

1. 查看机启动级别

1
Runlevel

显示 N 2
则当前的级别是2级,那么所有开机启动项就是在/etc/rc2.d目录下。

2. 查看原redis启动序号

1
ls -l /etc/rc2.d

这个目录下都是软链接(符号链接),链接到/etc/init.d目录。
显示格式如下:S/K + 序号 + 脚本名

1
2
lrwxrwxrwx 1 root root  22 Dec  2 15:37 S20redis-server -> ../init.d/redis-server
lrwxrwxrwx 1 root root 18 Aug 24 2017 S99rc.local -> ../init.d/rc.local

启动序号是20
S开头是开机时的脚本启动顺序,按序号从小到大启动。
K开头表示是关机时的脚本关闭顺序,按序号从大到小关闭。

3. 将启动脚本软链接到开机启动目录下

1
ln -s /etc/init.d/redis-server-2 /etc/rc2.d/S20redis-server-2

注意:如果两个redis有主从关系的话即需要有先后启动顺序,就需要适当的增大序号,如21

1
ln -s /etc/init.d/redis-server-2 /etc/rc2.d/S21redis-server-2

*也可以使用update-rc.d命令,效果相同:

1
update-rc.d -f redis-server-2 defaults 20

4. 取消开机启动

方法一:使用update-rc.d命令

1
update-rc.d -f redis-server-slark remove

方法二:直接删除软链接

1
rm -f /etc/rc2.d/S20redis-server-slark

5. 关于rc.local

rc.local也是开机启动脚本,从ls -l /etc/rc2.d 命令的输出结果也可以看出,它的启动序号是99。
所以rc.local里的内容是在所有更高级别的初始化脚本(rc1.d rc2.d …)运行之后再执行的。