Debian vps设置软件开机自启动

很多时候我们需要为安装的软件设置开机自启动,之前对这块知识不是非常的明了,今天总结一下关于debian vps开机自启的相关知识,方便有需要的同学。

debian启动过程

在linux的启动过程一文中,我介绍了linux启动所需的过程,其中,在第五步时会运行init进程。init进程会读取配置文件/etc/inittab,然后分别执行系统初始化及启动相应运行级别的系统服务。

1、系统初始化

init进程会首先执行sysinit脚本进行系统初始化,由于发行版的不同,sysinit脚本所在路径也不同,在debian中,它的路径为/etc/init.d/rcS。实际上,它会执行/etc/rcS.d中的脚本,而所有系统初始化相关的脚本也都在/etc/rcS.d中。初始化内容包括:

init $PATH
config network
start swap function
set hostname
check root file system, repair if needed
check root space
……

2、启动默认运行级别服务

接下来,init程序会执行默认运行级别中的服务脚本,默认运行级别一般在/etc/inittab文件中指定。Linux有7个运行级别,分别为:

0     系统停机状态           
1     单用户或系统维护状态    
2~5  多用户状态             
6     重新启动               

在机器引导时,init进程从运行级0开始,一级一级往上运行到在/etc/inittab中所设置的默认运行级别。

Debian系统默认运行级别为2,也就是说系统默认运行在多用户状态下。在/etc目录下,针对不同运行级别相应的有rc0.d、rc1.d、、、rc6.d这样七个目录,对应着每个运行级别。执行到相应运行级别时,会执行这些目录下的脚本。

rcN.d目录中放置的是init.d中脚本的链接(N = 0 ~ 6),事实上,在任一个/etc/rcN.d/目录下的文件都是一个到/etc/init.d/的符号链接。/etc/rcN.d/目录下文件命名方式决定了哪个脚本将会运行,”K”开头的在进入该运行级别时默认在执行,执行相应的脚本,会杀掉该服务。而所有S开头的,则在进入运行级别时,会被执行。字母之后的两位数字指定启动的顺序,较小的数字将先被执行。

3、/etc/rc.local

rc.local也是常使用的一个脚本。该脚本是在多用户运行级别结束后再执行的,因此可以安全地在里面添加你想在系统启动之后执行的脚本。

设置软件自启动方法

常用的有两种方法:修改/etc/rc.local及添加开机服务。推荐第二种方法。

1、修改/etc/rc.local

编辑/etc/rc.local

1
vi /etc/rc.local

在在 exit 0 前面添加好脚本代码,以shadowsocks为例:

1
2
/etc/init.d/shadowsocks-libev start
exit 0

2、添加开机服务

首先需要将开机服务脚本放置在/etc/init.d/目录下。

关于开机服务脚本的编写,请参考:Debian下开机服务脚本的编写

然后采用如下方式添加服务

1
update-rc.d xxx defaults

事实上该命令的作用是在rc0.d、rc1.d、、、rc6.d六个目录下建立软连接。

同样以shadowsocks为例,首先查看下/etc/init.d/目录下有没有shadowsocks-libev,经过查看确实有。
然后执行以下命令:

1
update-rc.d shadowsocks-libev defaults

这样就可以了。

如果想移除该开机服务,可以使用如下代码

1
update-rc.d -f xxx remove

小结

上面介绍了设置debian开机自启动的两种方法:修改/etc/rc.local及添加开机服务法。

此条目发表在服务器分类目录,贴了标签。将固定链接加入收藏夹。