SysV-init
1.1、SysV-init简介

SysVSystem V的简写,System V是著名的Unix发行版本。

SysV-init官网:http://savannah.nongnu.org/projects/sysvinit

1.2、runLevel

SysV-init只规定了runLevel为一系列的阿拉伯数字,但是并没有规定必须是哪几个数字, 不同的发行版版本都有各自的规定。

Debian系的GNU/LinuxrunLevel定义如下:

runLevel英文说明中文说明
0Halt关机模式
1Single单用户模式
2Full multi-user with display manager (GUI)
3Full multi-user with display manager (GUI)
4Full multi-user with display manager (GUI)
5Full multi-user with display manager (GUI)
6Reboot重启

使用SysV-init的系统一般会提供一个runlevel命令,用它来查看当前的运行级别:

1.3、/etc/inittab

/etc/inittab

1.4、/etc/rc${runLevel}.d/

/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/目录里的软连接名字的第一个字母改成小写, 或者干脆删除这个软连接。

1.5、/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 &'
1.6、相关的管理工具
  • halt
  • reboot
  • shutdown
  • poweroff
  • killall
  • tellinit
  • sulogin
  • wall