ubuntu开机自动项详解

454 阅读2分钟

运行级别

Ubuntu运行级别

Ubuntu的默认开机的runlevel是2,可以用runlevel来查看当前的默认运行级别。 也可以查看/etc/init/rc-sysinit.conf中env DEFAULT_RUNLEVEL=2

debian系(ubuntu是基于debian)的Linux一直是用runlevel 2来默认启动,并且runlevel定义也与redhat有区别。
debian的runlevel级别定义如下:
0 - Halt
1 - Single
2 - Full multi-user with display manager (GUI)
3 - Full multi-user with display manager (GUI)
4 - Full multi-user with display manager (GUI)
5 - Full multi-user with display manager (GUI)
6 - Reboot
可以发现2~5级是没有任何区别的。

redhat

而redhat的runlevel级别定义如下:
0 - Halt
1 - Single
2 - Not used/User definable
3 - Full multi-user NO display manager
4 - Not used/User definable
5 - Full multi-user with display manager (GUI)

runlevel级别定义

0:关机。不能将系统缺省运行级别设置为0,否则无法启动。
1:单用户模式,只允许root用户对系统进行维护。
2:多用户模式,但不能使用NFS(相当于Windows下的网上邻居)
3:字符界面的多用户模式。
4:未定义。
5:图形界面的多用户模式。
6:重启。不能将系统缺省运行级别设置为0,否则会一直重启。

这里补充一下,多数的linux都是用一种叫System V的机制来启动运行级别,而ubuntu使用upstart代替init启动系统进程。所以没有那个inittab文件来改默认运行级别。ubuntu 的默认运行级别文件是/etc/init/rc-sysinit.conf。

开机启动脚本

/etc/init.d/*保存的是开机启动的脚本

开机启动程序的配置

/etc/mysql/*.conf

运行级别脚本

格式:

/etc/rcRunlevel.d/[SK]NNname 

其中Runlevel表示运行级别;S表示启动;K表示停止;NN时个2位数字,表示启动次序,数字越小,它将被越早执行;name表示在/etc/init.d目录下的名字。
例如MySQL在运行级别为2的启动脚本:S02mysql。rcS.d下的系统级别的执行脚本。

在/etc/rcRunlevel.d所有脚本都是一个软连接,指向/etc/init.d。如S02mysql:

lrwxrwxrwx 1 root root 15 Dec 16 17:49 S02mysql -> ../init.d/mysql

修改运行

可用Ubuntu自带的update-rc.d修改

update-rc.d foo defaults
update-rc.d foo remove

实例

将tomcat设置开机启动

1.拷贝启动脚本到/etc/init.d

重命名为tomcat

cp catalina.sh /etc/init.d/tomcat

2.修改catalina.sh

增加如下内容,为了解决service启动找不到环境变量的问题。

#fix service boot issue;because service remove most environment variables and with the current working directory set to
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.0.30

创建启动链接

使用update-rc.d创建启动链接

update-rc.d -f tomcat defaults 

启动

service tomcat start