原文: http://blog.csdn.net/liansehai/article/details/45370965

CentOS系统有7个运行级别(runlevel)

运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d目录下的文件。

#查看系统运行级别
[root@bin2ctyun ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
# 1 - Single user mode
# 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 运行级别2:多用户状态(没有NFS)
# 3 - Full multiuser mode
# 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
# 4 - unused
# 运行级别4:系统未使用,保留
# 5 - X11
# 运行级别5:X11控制台,登陆后进入图形GUI模式
# 6 - reboot (Do NOT set initdefault to this)
# 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
#
id:3:initdefault:
# 表示运行级别3,是默认的。

运行级别的原理: 1、在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)

[root@bin2ctyun init.d]# ls /etc/rc.d/init.d/
auditd halt lvm2-monitor nginx rdisc single
blk-availability ip6tables mysql ntpd restorecond sshd
cloud-set-guest-password iptables netconsole ntpdate rsyslog sysstat
crond killall netfs php-fpm sandbox udev-post
functions lvm2-lvmetad network postfix saslauthd xe-linux-distribution

2、在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别

[root@bin2ctyun init.d]# ls /etc/rc.d/
init.d rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local rc.sysinit

3、rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。

[root@bin2ctyun rc3.d]# ll /etc/rc.d/rc3.d
总用量 0
lrwxrwxrwx 1 root root 19 11月 14 09:35 K10saslauthd -> ../init.d/saslauthd
lrwxrwxrwx. 1 root root 20 11月 13 16:22 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx 1 root root 14 3月 16 13:53 K74ntpd -> ../init.d/ntpd
lrwxrwxrwx 1 root root 17 3月 16 13:53 K75ntpdate -> ../init.d/ntpdate
lrwxrwxrwx. 1 root root 21 11月 13 16:22 K87restorecond -> ../init.d/restorecond
lrwxrwxrwx 1 root root 15 11月 14 09:34 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx 1 root root 18 3月 25 12:20 K92iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 17 4月 1 22:36 S01sysstat -> ../init.d/sysstat
lrwxrwxrwx 1 root root 22 3月 25 12:20 S02lvm2-monitor -> ../init.d/lvm2-monitor
lrwxrwxrwx 1 root root 19 3月 25 12:20 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx 1 root root 17 3月 25 12:18 S10network -> ../init.d/network
lrwxrwxrwx. 1 root root 16 11月 13 16:23 S11auditd -> ../init.d/auditd
lrwxrwxrwx 1 root root 17 3月 25 12:19 S12rsyslog -> ../init.d/rsyslog
lrwxrwxrwx. 1 root root 31 11月 14 09:05 S14xe-linux-distribution -> ../init.d/xe-linux-distribution
lrwxrwxrwx 1 root root 26 3月 25 12:20 S25blk-availability -> ../init.d/blk-availability
lrwxrwxrwx 1 root root 15 3月 25 12:18 S25netfs -> ../init.d/netfs
lrwxrwxrwx 1 root root 19 3月 25 12:18 S26udev-post -> ../init.d/udev-post
lrwxrwxrwx 1 root root 17 4月 1 22:36 S50php-fpm -> ../init.d/php-fpm
lrwxrwxrwx 1 root root 15 3月 16 16:07 S55nginx -> ../init.d/nginx
lrwxrwxrwx 1 root root 14 3月 25 12:20 S55sshd -> ../init.d/sshd
lrwxrwxrwx 1 root root 15 3月 16 15:24 S64mysql -> ../init.d/mysql
lrwxrwxrwx 1 root root 17 4月 1 22:36 S80postfix -> ../init.d/postfix
lrwxrwxrwx 1 root root 15 4月 1 22:36 S90crond -> ../init.d/crond
lrwxrwxrwx 1 root root 34 11月 14 09:29 S98cloud-set-guest-password -> ../init.d/cloud-set-guest-password
lrwxrwxrwx 1 root root 11 3月 25 12:18 S99local -> ../rc.local

4、系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件

  • 对于以K开头的文件,系统将终止对应的服务

  • 对于以S开头的文件,系统将启动对应的服务

5、查看运行级别用:runlevel

[root@bin2ctyun rc3.d]# runlevel
N 3

6、进入其它运行级别用:init N

7、注意如果输入 init 0 则为关机,init 6为重启系统

Linux运行级别的配置

cat /etc/inittab

可以看到最后一行 id:3:initdefault: 各字段解释如下: id:runlevels:action:process

id:是一个任意指定的四个字符以内的序列标号,在本文件内必须唯一;使用老版本的libc5(低于5.2.18)或a.out库编译出来的sysvinit限制为2字符。注意:像getty之类的登陆进程必须使id字段与tty编号一致,如tty1需要id=1,许多老版本的登陆进程都遵循这种规则。

runlevels:表示这一行适用于运行那个/些级别(这里是3,可以有多个,表示在相应的运行级均需要运行);另外sysinit、boot、bootwait这三个进程会忽略这个设置值。

action:表示进入对应的runlevels时,init应该运行process字段的命令的方式,常用的字段值及解释在附录内。例子中的wait表示需要运行这个进程一次并等待其结束。

process:具体应该执行的命令。例子中的/etc/init.d/rc命令启动运行级别3中应该运行的进程/命令,并负责在退出运行级时将其终止(当然在进入的runlevel中仍要运行的程序除外。)当运行级别改变,并且正在运行的程序并没有在新的运行级别中指定需要运行,那么init会先发送一个SIGTERM信号终止,然后是SIGKILL。

有效的action值如下:

respawn:表示init应该监视这个进程,即使其结束后也应该被重新启动。
wait:init应该运行这个进程一次,并等待其结束后再进行下一步操作。 once:init需要运行这个进程一次。 boot:随系统启动运行,所以runlevel值对其无效。 bootwait:随系统启动运行,并且init应该等待其结束。 off: 没有任何意义。
initdefault:系统启动后的默认运行级别;由于进入相应的运行级别会激活对应级别的进程,所以对其指定process字段没有任何意义。如果inittab文件内不存在这一条记录,系统启动时在控制台上询问进入的运行级。 sysinit:系统启动时准备运行的命令。比如说,这个命令将清除/tmp。可以查看/etc/rc.d/rc.sysinit脚本了解其运行了那些操作。 powerwait:允许init在电源被切断时,关闭系统。当然前提是有U P S和监视U P S并通知init电源已被切断的软件。RH linux默认没有列出该选项。 powerfail:同powerwait,但init不会等待正在运行的进程结束。RH linux默认没有列出该选项。 powerokwait:当电源监视软件报告“电源恢复”时,init要执行的操作。
powerfailnow:检测到ups电源即将耗尽时,init要执行的操作,和powerwait/powerfail不同的哟。
ctrlaltdel:允许init在用户于控制台键盘上按下C t r l + A l t + Del组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C t r l + A l t + Del组合键配置为别的行为,比如忽略等。我是设置成打印一句骂人的话了^o^。 kbrequest:监视到特定的键盘组合键被按下时采取的动作,现在还不完善。 ondemand:A process marked with an ondemand runlevel will be executed whenever the specifiedondemand runlevel is called. However, no runlevel change will occur(ondemand runlevels are ‘a’, ‘b’,and ‘c’

补救措施:

如果您的机器进入了这样一种状态,系统由于损坏的/etc/inittab而不能boot,由于受损的/etc/passwd而不能登入,或者干脆就是忘记了口令。怎么办?

法1: 在LILO boot 提示符下键入 linux 1 而boot进入单用户模式,这是一个几乎没有装载任何服务的状态,您可以在提供的shell下执行修复命令。

法2: 在启动后的 lilo 提示符下输入: init=/bin/sh rw 就可以使机器进入运行级1 , 并把 root 文件系统挂为读写。他会跳过所有系统认证, 让你使用passwd 程序 来改变root口令,然后启动到一个新的运行级。

2法的区别:

单用户模式和传入init=/bin/sh 是不同的 单用户模式会做rc.sysinit的初始化,就是系统的最基本初始化,比如检查文件系统,开启swap,加载模块,等等而传入init=/bin/sh 则不做任何初始化,只是给你个shell而已。

CentOS统的7个运行级别的含义的更多相关文章

  1. CentOS 7/8修改系统运行级别

    CentOS 7/8修改系统运行级别   CentOS 5. CentOS 6可以通过修改配置文件/etc/inittab 参数,从而修改系统运行级别,切换系统的runlevel,但是从CentOS ...

  2. Centos 7 修改默认的运行级别

    Runlevel System State 0 Halt the system 1 Single user mode 2 Basic multi user mode 3 Multi user mode ...

  3. Linux:检查当前运行级别的五种方法

    运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别由数字标识. 每个运行级别指定不同的系统配置,并允许访问不同的进程组合.默 ...

  4. Linux开机流程及运行级别

    启动流程: 没有运行程序的硬件除了会电人,没有别的用处.那么计算机是如何识别软件并执行的呢?下面介绍操作系统的开机启动流程: BIOS:开机时主动执行的第一个程序,会识别存储设备. MBR:第一个可开 ...

  5. 关于Ubuntu运行级别、开机启动脚本的说明

    关于Ubuntu运行级别.开机启动脚本的说明 目录简介 1.1介绍Ubuntu下面的自启动脚本目录 1.2 Linux操作系统运行级别的概念 1.3关于操作系统自启脚本的启动顺序 1.4    Lin ...

  6. linux 系统运行级别一般为 0-6,请分别写出每个级别的含义

    每个运行级别的含义 0   关机模式(不要把启动级别  运行级别设置为0) 1   单用户模式 2   无NFS多用户模式 3   文本模式(命令行模式,完整的多用户模式) 4   未使用的 5   ...

  7. centos7中修改运行级别

    centos6 在centos6里打开vim /etc/inittab文件看到下面有一行 id:5:initdefault,因此我们可以通过修改这个文件的id后的数字来修改运行级别 如果我们想要直接切 ...

  8. CentOS 7 运行级别切换

    CentOS 7 之前的版本是通过 /etc/inittab 文件来定义系统运行级别: [sywu@wusuyuan ~]$ cat /etc/centos-release CentOS releas ...

  9. CentOS 7 运行级别的切换

    CentOS 7 运行级别的切换 由命令行级别切换到窗口级别的命令未变:init 5或startx 由窗口级别切换到命令行级别的命令未变:init 3 新版本的运行级别都定义在 /lib/system ...

随机推荐

  1. 【博弈论】【SG函数】bzoj1777 [Usaco2010 Hol]rocks 石头木头

    仅有距根节点为奇数距离的节点的石子被移走对答案有贡献,∵即使偶数的石子被移走,迟早会被再移到奇数,而奇数被移走后,不一定能够在移到偶数(到根了). 最多移L个:石子数模(L+1),比较显然,也可以自己 ...

  2. 【左偏树】BZOJ2809-[APIO2012]dispatching

    [题目大意] 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级.为保密,同 ...

  3. 【周期性/容斥+二分】POJ2773-HAPPY 2006

    [题目大意] 求与n互质的第k个数. [思路] 先求出小于k且与n互质的数,再利用gcd(bt+a,b)=gcd(a,b)的性质求解,效率低.枚举与n互质的数的效率是O(nlogn),求解第k个数的效 ...

  4. linux内核3.6版本及以下的bug引发的故障--cpu使用率100%

    现象:         旗舰店运价库cpu使用率100%,load升高,导致后续的请求失败.         重启服务器,cpu.load恢复正常. 触发条件:        (1)linux内核3. ...

  5. AppCompatActivity与toolbar的结合

    原文:http://www.51itong.net/android-activity-appcompatactivity-toolbar-15750.html 另外一个博客:Android 5.x T ...

  6. u-boot-2012.10移植到AT91RM9200(包括NAND FLASH)

    基于中嵌SRM9204 目  录 1 配置 1.1修改顶层Makefile(可选) 1.2配置 1.3下载.运行.测试 2 修改内存配置参数(根据芯片手册修改) 2.1 修改配置参数 2.2 编译 2 ...

  7. 破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇) 转

    https://www.ancii.com/database/30842.html 微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这 ...

  8. WebGL的颜色渲染-渲染一张DEM(数字高程模型)

    目录 1. 具体实例 2. 解决方案 1) DEM数据.XYZ文件 2) showDEM.html 3) showDEM.js 4) 运行结果 3. 详细讲解 1) 读取文件 2) 绘制函数 3) 使 ...

  9. 一个简单的假vue全家桶(vue+vue-router+require)

    首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...

  10. MacBook安装office

    已更新至最新版Microsoft Office 2016 v16.13.18052304,完美支持macOS High Sierra 10.13.4,破解方法很简单,先安装Microsoft_Offi ...