做为服务器来说,很有可能因为突然停电或者不堪压力而宕机,重启机器之后, 希望能自动启动部署在这台机器上的服务。所以开启启动是很有必要的。
Debian
系的GNU/Linux
的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,重启
可以用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
文件夹里的软连接名字的第一个字母改成小写, 或者干脆删除这个软连接。
/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 &'