SysV
是System V
的简写,System V是著名的Unix发行版本。
SysV-init
官网:http://savannah.nongnu.org/projects/sysvinit
SysV-init
只规定了runLevel
为一系列的阿拉伯数字,但是并没有规定必须是哪几个数字, 不同的发行版版本都有各自的规定。
Debian
系的GNU/Linux的runLevel
定义如下:
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 | 重启 |
使用SysV-init
的系统一般会提供一个runlevel
命令,用它来查看当前的运行级别:
/etc/inittab
在/etc
目录中有rc${runLevel}.d
的文件夹。
下面是Ubuntu中的/etc/rc${runLevel}.d/
各个目录中的内容:
这些文件夹里面的文件都是指向/etc/init.d/
目录里面运行服务的脚本的软连接, 其中软连接的数目少于运行脚本数,这就是说不是所有服务都要在一个级别中运行的。
这些软连接的命名是有规则的,规则是:[K|S][number][serviceName]
K
代表kill
,文件名以K
开头的脚本,在执行该脚本的时候会传递stop
参数;
S
代表start
,文件名以S
开头的脚本,在执行该脚本的时候会传递start
参数;
number
是两位数,小于10
的时候,最高位用0
补齐。number
决定这些脚本的执行顺序, 执行顺序的规则是:K小数->K大数->S小数->S大数。
这里注意:/etc/rc${runLevel}.d/
目录里的所有软连接都会被执行,不论K或者S。
serviceName
对应的就是/etc/init.d/
目录里的同名可执行脚本的文件名。
如果想要删除某个runLevel
所要运行的服务,可以把相应/etc/rc${runLevel}.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 &'