Linux运行级别研究(转)
Linux系统中的运行级别
7种运行级别
运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统的运行模式,不同的运行模式下系统的功能也有所有不同。Linux 系统下通常分为7
种运行级别,分别是从0
到6
。各级别介绍如下:
0
- 停机模式。在这种模式下,系统处于停机状态,系统默认运行级别不能设为0
,否则将不能正常启动,这个运行级别主要用于关闭任务,在/etc/rc0.d
目录下的各个连接命令都是此级别的命令,在关闭系统时,这些命令将被逐个执行。它们会杀掉所有进程、关闭虚拟内存和交换文件、卸载文件系统和交换分区。1
- 单用户模式。在这种运行模下,系统处于单用户工作状态,登录用户具有root
权限,文件系统被加载但是网络却没有被加载,因此也无法远程登陆。这个运行级别,只允一个用户从本地计算机上登录,/etc/rc1.d
目录下的所有文件与此运行级别相关连,这个运行级别一般用于系统管理与维护。2
- 多用户模式。用户可以通过网络进行登录,但没有NFS
(Network File System),即网络文件系统。/etc/rc2.d
目录下所有文件与此级别相连。3
- 完全多用户模式。用户可以通过网络进行登录,且有NFS
,用户登陆后会进入控制台命令行模式。这也是缺省的运行模式,在这种运行级别下所有网络服务程序会一起运行。/etc/rc2.d
录下的文件与此级别相连4
- 自定义模式。这是一种系统未使用的保留模式,/etc/rc4.d
目录与此级别相连。这一级别是用户自定义的运行级别,用户可以根自己的需要进行一些自定义设置。如果想要运行这一级别的话,必须在rc3.d
目录下放入连接文件,就像其他rc*.d
目录下的文件,并指明是启动还是终止进程。5
- 图形化模式。在 Linux 下运行X Window
就是使用这一运行级别,用户登录后将进入图形化的GUI界面。在这一级别下除了DNS的named
与级别3
不同,其余的都相同。6
- 重启模式。系统正常关闭并重启,默认运行级别不能设为5
,否则系统将不能正常启动。/etc/rc6.d
目录与此级别相连。在这一运行级别下,不会关闭电源,/etc/rc6.d
目录下的连接与rc0.d
目录下的连接基本相同;不同之处在于,虽然它们都执行halt
(关闭)命令,但是给halt
传递的参数不同,所级别6
会重新启动系统而0
会关闭系统。
注意:以上适用于CentOS
等发行版,而对于Ubuntu
等debian
系的Linux来说,2~5
都是多用户图形模式,几个运行模式没有区别。
不同运行级别的实现原理
如上所述,Linux系统的每一个运行级别,都对应一个目录。
在/etc/init.d
目录下有许多脚本程序,我们将这些程序称之为服务(Service
)。
而/etc
目录下,还有rc0.d
~rc6.d
共7个目录。在这些目录下都是一些软链接文件,这些链接文件都指向了init.d
目录下的service
脚本文件。而这些软连接的命名规则为:K+nn+服务名
或S+nn+
服务名,其中nn
为两位数字。
系统启动时,会根据当前运行级别进入对应的rc*.d
目录,然后按照文件名顺序检索目录下的链接文件,并会做以下处理:
- 对于以
K
开头的文件,系统将终止对应的服务 - 对于以
S
开头的文件,系统将启动对应的服务
注意:/etc/init.d
存在于Ubuntu等发行版中,而CentOS等发行版中位于/etc/rc.d/init.d
目录下,但通过/etc/init.d
软连接进行关联。同样的,rc*.d
等目录,在Ubuntu等系统中位于/etc/
目录下,而在CentOS等系统中位于/etc/rc.d
目录下,但在/etc
下都有对应的软连接。
Linux运行级别的修改
运行级别相关命令
查看系统当前运行级别:runlevel
runlevel
N 3
切换系统运行级别:init N
。如,切换到3
多用户命令模式:
init 3
常用的init
命令还有:init 0
结束所有进程后关闭计算机、init 6
重启系统
修改系统默认运行级别(以下实例没测试过)
Linux会根据运行级别的不同执行不同程序,虽然Ubuntu
和CenosOS
等不同发行版中都有运行级别的概念,但运行机不同,因此修改默认启动级别的方式也有所有不同。
CentOS
默认运行级别的修改(没测试)
CentOS
等Linux系统中使用一种叫System V
的机制来启动运行级别,在该机制下,通过/etc/inittab
配置系统启动进程。因此,也可以通过该文件来配置默认的启动级别:
sudo vi /etc/inittab
找到如下行:
id:5:initdefault:
并修改为:
id:3:initdefault:
注意:以上方法适用于CentOS 7
之前的系统,在CentOS 7
中/etc/inittab
文件已不再使用:
cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
根据该文件提示,查看当前启动模式:
systemctl get-default
graphical.target
修改默认启动级别:
systemctl set-default multi-user.target
输入密码完成修改。重启后,系统默认将以级别3
启动。
Ubuntu
默认运行级别的修改
笔者使用的Ubuntu
系统版本为16.04
,Ubuntu
系统同样可以识别/etc/inittab
文件,但由于系统的2~5
运行级别没有任何变化,所以修改/etc/inittab
文件不能生效。Ubuntu
默认运行级别可以通过以下方式修改:
编辑/etc/default/grub
文件:
sudo vi /etc/default/grub
将GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
的一行注释掉:
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
将GRUB_CMDLINE_LINUX=""
的一行修改为:
GRUB_CMDLINE_LINUX="text"
去掉#GRUB_TERMINAL=console
一行的注释,即修改为:
GRUB_TERMINAL=console
终端运行
sudo update-grub
重启系统:
sudo reboot
如果修改没有问题,系统默认会以命令行模式启动。
在命令行模式下,可以通过如下命令切换回桌面模式:
sudo systemctl start lightdm
sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target
runlevel与target的对照表:
0,runlevel0,target,poweroff.target关闭系统。
1,runlevel1,target,rescue.target进入救援模式。
2,runlevel2,target,multi-user.target进入非图形界面的多用户方式。
3,runlevel3,target,multi-user.target进入非图形界面的多用户方式。
4,runlevel4,target,multi-user.target进入非图形界面的多用户方式。
5,runlevel5,target,graphical.target进入图形界面的多用户方式。
6,runlevel6,target,reboot.target重启系统。
1、Ubuntu 6.10及以前版本使用Sysvinit。
2、Ubuntu 14.10及以前版本使用Upstart但是还留着Sysvinit并存。
https://wiki.ubuntu.com/Upstart
https://help.ubuntu.com/community/UpstartHowto
3、Ubuntu 15.04开始预设使用Systemd,但是可以在开机选项选择使用Systemd或Upstart,但是不可同時使用Sysvinit或Upstart并存。
参考:
https://itbilu.com/linux/management/4JEzjDV8G.html(以上内容转自此篇博客)
http://www.dbaxiaoyu.com/archives/1747
http://blog.csdn.net/soonfly/article/details/72876001
http://bxuan.blog.51cto.com/blog/376592/704946
https://www.ibm.com/developerworks/cn/linux/l-lpic1-101-3/index.html
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-101-3/index.html
https://zh.wikipedia.org/wiki/%E8%BF%90%E8%A1%8C%E7%BA%A7%E5%88%AB
http://forum.ubuntu.org.cn/viewtopic.php?p=1833476(运行级别理解)
http://www.jb51.net/LINUXjishu/350268.html(runlevel与target区别)
http://blog.csdn.net/guanggegg/article/details/50389358(各系统运行级别的修改)
http://blog.csdn.net/notsaltedfish/article/details/52234718(Ubuntu 16.04修改默认启动级别)
http://forum.ubuntu.org.cn/viewtopic.php?t=474412
https://askubuntu.com/questions/788323/change-runlevel-on-16-04
Linux运行级别研究(转)的更多相关文章
- linux运行级别[转自网络]
运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc ...
- linux 运行级别与chkconfig
一.Linux的运行级别 在装MySQL的时候,才知道了Linux的运行级别这么一回事.汗…自己太水了…下面总结一下: 什么是运行级别呢?简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是 ...
- 误把Linux运行级别设置为6后的解决方法【转】
本文转载自:http://www.wuji8.com/meta/841011126.html 误把Linux运行级别设置为6后的解决方法 我们知道,Linux有7个运行级别,而运行级别设置为6 ...
- linux运行级别
也许大家偶然会发现/sbin里有个init命令.你知道它是如何使用的吗? 如果你不喜欢使用图形登录方式,如何能够让用户在控制台下运行startx命令呢? 有时你要维护服务器,暂时不希望别的用户登录系统 ...
- 修改linux运行级别
1.Linux下的7个运行级别 0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭. 1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登 ...
- linux运行级别和开机流程
linux有七个运行级别 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别2:多用户状态(没有NF ...
- Linux:运行级别,root密码重置,救援模式,安装图形化界面
运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...
- Linux运行级别及解释
Linux中有七个运行级别,分别为0~7 0级:关机 1级:单用户(找回丢失密码) 2级:多用户无网络 3级:多用户有网络,最常用的级别 4级:保留,目前Linux暂无使用 5级:图像界面 6级:重启 ...
- Linux 运行级别
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/47 运行级别 不同运行级别的描述 运行级别0:系统停机状态,系统 ...
随机推荐
- magento后台开发学习笔记(入门实例向)
目的是做一个grid,参考博客http://www.sunzhenghua.com/magento-admin-module-development-part1-grid-forms-tabs-con ...
- UML中类之间的关系
UML中类之间的关系分为以下几种:依赖.关联.泛化.聚合.组合. 依赖是指一个类使用了另一个类,它是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定).最常见的依 ...
- [书目20140824]触动人心:设计优秀的iPhone应用
关于作者致谢译者序入门设计令人欣喜且易用的应用等下……先吸口气阅读本书不需要专业知识忠言一切从点击开始 我们是如何使用iPhone应用的行走中:一只手,一只眼睛,一直在抖动尽快搞定满满一箱 ...
- [ POI 2010 ] Antisymmetry
\(\\\) \(Description\) 给出一个长度为 \(N\) 的二进制串,定义一个子串是优秀的,当且仅当其正着看,和倒着按位取反后看结果是一样的,求整个串有多少个优秀的子串. \(N\le ...
- WordPress熊掌号页面改造,自动发布
写在前面的话: 有很多小伙伴刚进入WordPress,对很多东西还不太了解,比如:有的主题很挑剔,对于有些插件不兼容,但是呢对于这个功能有不可或缺.所以,这时候就需要我们自己手动修改或者添加代码,来实 ...
- JavaScript(十三)面向对象
面向对象 面向对象的过程 通过new 构造函数 生成的对象来执行, 类似于事件的执行 this指向函数,然后再把这个函数赋值给一个实例 所以在函数内的this 就指到了实例上 function ...
- Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载
元素定位及其他操作 0.常见的识别元素的方法是什么? driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...
- 使用morphia实现对mongodb的聚合查询
morphia是谷歌的一个针对mongodb的数据化持久框架: 关于mongodb的介绍不在这里展示,直接进入主题:采用morphia实现对mongodb的聚合查询 这里获取所有学生的分数总和 spr ...
- iOS显示一张图片 Objective-C
图片文件放在项目目录下 #import "ViewController.h" @interface ViewController () @end @implementation V ...
- QS之shell script
1 Invoke Mdoelsim In order to open Modelsim automatically, it is better to use a shell script to inv ...