Linux的运行级别和设置开机启动服务的方式
Linux的运行级别
什么是运行级别呢?简单点来说,运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/ect/rc.d目录下的文件。
Linux的7个运行级别
级别 | 描述 |
---|---|
0 | 系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭 |
1 | 单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录 |
2 | 多用户状态,没有NFS支持 |
3 | 完整的多用户模式,有NFS,登陆后进入控制台命令行模式 |
4 | 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置 |
5 | X11控制台,登陆后进入图形GUI模式,X Window系统 |
6 | 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启 |
运行级别原理:
- 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
- 在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别
- rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
- 系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件:对于以K开头的文件,系统将终止对应的服; 对于以S开头的文件,系统将启动对应的服务
- 查看运行级别用:runlevel
- 进入其它运行级别用:init N,如果init 3则进入终端模式,init 5则又登录图形GUI模式
- 另外init0为关机,init 6为重启系统
标准的Linux运行级别为3或5,如果是3的话,系统就在多用户状态;如果是5的话,则是运行着X Window系统。
不同的运行级别有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root口令,那么可以让机器启动进入单用户状态来设置。在启动后的命令提示符下输入:
init=/bin/sh rw
这样就可以使机器进入运行级别1,并把root文件系统挂为读写。它会路过所有系统认证,让你使用passwd程序来改变root口令,然后启动到一个新的运行级。
设置开机启动服务
使用chkconfig设置
-
将启动文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下
-
用文本编辑器如 vi 打开文件,文件前面务必添加如下三行代码,否侧会提示chkconfig不支持
!/bin/sh 告诉系统使用的shell,所以的shell脚本都是这样
chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必须
description: http server(自己随便发挥)//两行都注释掉!!!,此行代码必须
- chkconfig --add [脚本文件名] 操作后服务就已经添加到启动项了
### 编辑文件 /etc/rc.local
- 用文本编辑器如 *vi* 打开该文件
- 在文件末尾(exit 0之前)加上你开机需要启动的程序或执行的命令即可(执行的程序需要写绝对路径,添加到系统环境变量的除外)
### 自己编写启动脚本
- 编写服务启动shell脚本
- 将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本
### 使用 *systemctl* 命令添加
- systemctl enable [服务名称]