设置开机启动

做为服务器来说,很有可能因为突然停电或者不堪压力而宕机,重启机器之后, 希望能自动启动部署在这台机器上的服务。所以开启启动是很有必要的。

1.1、Ubuntu运行级别(runlevel)

Debian系的GNU/Linuxrunlevel定义如下:

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,重启

可以用runlevel命令来查看当前的默认运行级别:

可以发现2~5级是没有任何区别的。他们为多用户模式,这和一般的GNU/Linux不一样。

/etc目录中有rc'N'.d的文件夹,'N'代表0-6,也就对应了这7个启动级别。

这些文件夹里面的文件都是指向/etc/init.d/里面运行服务的脚本的软连接, 其中软连接的数目少于运行脚本数,这就是说不是所有服务都要在一个级别中运行的。

这些软连接的命名是有规则的,规则是:[K|S][0-9,0-9][name]

K代表kill,S代表start,后面是个二位数,最后是对应的运行服务的脚本文件名。

S开始的文件向脚本传递start参数

K开始的文件向脚本传递stop参数

number决定执行的顺序

运行顺序:K小数->K大数->S小数->S大数。这里注意文件夹里的所有软连接都会被执行,不论K或者S。

如果想要删除某个运行级别所要运行的服务,可以把相应rc'N'.d文件夹里的软连接名字的第一个字母改成小写, 或者干脆删除这个软连接。

1.2、/etc/rc.local

/etc/rc.local是最后执行的,我们可以将启动脚本写到这个文件中来。但是要特别注意的是: 这个文件的执行权限是root,如果想要执行非root用户的命令,应该使用如下方式:

su <username> -c "command"

示例:

su leleliu008 -c '/home/leleliu008/bin/apache-tomcat-7.0.65/bin/startup.sh &'

常见的配置:

/usr/local/nginx/sbin/nginx

/etc/init.d/mysql start

export JAVA_HOME=/home/leleliu008/bin/jdk1.8.0_65

su leleliu008 -c '/home/leleliu008/bin/jdk1.8.0_65/bin/java -jar /home/leleliu008/Downloads/jenkins.war &'

su leleliu008 -c '/home/leleliu008/bin/apache-tomcat-7.0.65/bin/startup.sh &'

MYSQL_HOME='/home/leleliu008/bin/mysql-5.6.20-linux-glibc2.5-x86_64'
su leleliu008 -c '${MYSQL_HOME}/bin/mysqld --defaults-file=${MYSQL_HOME}/my.cnf &'

su leleliu008 -c '/home/leleliu008/bin/sonarqube-5.2/bin/linux-x86-64/sonar.sh start &'

su leleliu008 -c '/home/leleliu008/bin/atlassian-confluence-5.8.10/bin/start-confluence.sh &'