为什么说Ubuntu的运行级别为2
继上一篇文章http://www.cnblogs.com/EasonJim/p/7163069.html深入研究了Linux的运行级别之后,发现网上大部分都说Ubuntu的运行级别默认为2,那么下面就深入分析以下为什么是2而不是其它。
分析过程:
首先从http://forum.ubuntu.org.cn/viewtopic.php?f=97&t=221304这篇文章了解到Debian系的运行级别2~5都是一样的。并通过
cd /etc/init
less rc-sysinit.conf
发现里面有句:env DEFAULT_RUNLEVEL=2,所以在这个发现上,可以说明Ubuntu的默认运行级别为2。
而且从以下网站内容中也很多人普遍说明这个问题:
https://debian-administration.org/article/212/An_introduction_to_run-levels
http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html
https://stackoverflow.com/questions/16227792/runlevel-2-and-5-works-the-same-on-ubuntu
https://unix.stackexchange.com/questions/39411/why-does-debian-and-ubuntu-default-to-runlevel-2
https://wiki.debian.org/RunLevel
http://www.pathbreak.com/blog/ubuntu-startup-init-scripts-runlevels-upstart-jobs-explained
https://askubuntu.com/questions/686700/no-difference-between-runlevel-3-and-5-in-ubuntu-15-04
所以总结上面所说的,应该是这样:根据Debian策略手册,默认情况下,运行级别2到5之间没有区别。如下所示:
0 : System halt.
1 : Single-User mode.
2 : Graphical multi-user plus networking (DEFAULT)
3 : Same as "2", but not used.
4 : Same as "2", but not used.
5 : Same as "2", but not used.
6 : System reboot.
也就是说,在Debian系的系统上,2为默认级别,其余的3~5都没有使用。且官方介绍也是从2开始说起。
但是奇怪的发现,如果在Ubuntu 16.04的系统上运行runlevel命令,得到的是N 5,这于下面所示的级别上对应的就是GUI:
| 运行级别 | 名称 | 描述 |
| 0 | 停 | 关闭系统 |
| 1 | 单用户模式 | 管理任务模式。 |
| 2 | 多用户模式 | 不配置网络接口,不导出网络服务 |
| 3 | 多用户模式与网络 | 正常启动系统 |
| 4 | 未使用/用户可定义 | 为了特殊目的 |
| 5 | 使用GUI显示管理器正常启动系统 | 运行级别3 +显示管理器 |
| 6 | 重启 | 重新启动系统 |
| s或S | 单用户模式 | 不配置网络接口或启动后台进程。 |
或者会不会这样,在Server版本里面才会显示2,其实不是,经过测试,在Server 16.04版本上同样是N 5。
那么这样就奇怪了,会不会是随着版本的升级,这个启动级别同样也升级了。
从http://forum.ubuntu.org.cn/viewtopic.php?t=474412,发现Ubuntu系统级别的变更历史:
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并存。
而Systemd不再使用runlevel进行代表,而是使用target进行展示,对照的表格如下:
Mapping between runlevels and systemd targets
┌─────────┬───────────────────┐
│Runlevel │ Target │
├─────────┼───────────────────┤
│0 │ poweroff.target │
├─────────┼───────────────────┤
│1 │ rescue.target │
├─────────┼───────────────────┤
│2, 3, 4 │ multi-user.target │
├─────────┼───────────────────┤
│5 │ graphical.target │
├─────────┼───────────────────┤
│6 │ reboot.target │
└─────────┴───────────────────┘
这个表格出自:https://askubuntu.com/questions/788323/change-runlevel-on-16-04
那么我在测试时发现,在桌面版还是服务器版的Ubuntu 16.04获取默认的target时。都是显示graphical.target,也就是与N 5这个级别对应的。(命令:systemctl get-default)
但似乎这个也没有多少结论说明默认级别为2的问题。
总结:
所以,我猜测,由于历史原因,在15.04之前,系统级别应该还是以2为默认,但是经过15.04,使用了Systemd的问题,默认级别上改为了5为默认,而经过上面的历史发展,无论在2~5之间,都是没有区别的。
或者是由于Systemd这个的使用,使以前的一些文章上如何修改系统运行级别的,在16.04不生效的问题。那么要修改运行级别,可以参考这篇文章进行修改:https://askubuntu.com/questions/788323/change-runlevel-on-16-04
其它发现:
如果16.04的系统以5为默认级别,那么我建立一个服务之后,放在2级别上面就不会运行吗?不是这样的,系统的运行级别是说从小到大的依次运行,要运行到5,那么会经过2;所以,我们在设置服务时,也就是直接在2上设置自动启动就行了,但是发现一些服务会在2~5都设置自动运行,所以我猜测,这样的做法应该是为了保险,无论在哪个运行级别都能启动这个服务。参考:https://askubuntu.com/questions/323374/run-levels-only-at-start-up;
还有一些做法是在2~4设置启动,然后到5就以K开头去杀死,我觉得这种做法可以实现效果,但是如果按照上面的总结,依次运行的运行级别,会不会有点浪费资源,要先启动再杀死,倒不如从一开始的2级别到5级别都不启动好一些。
参考:
https://unix.stackexchange.com/questions/170555/why-is-my-debian-jessie-always-in-runlevel-5
https://askubuntu.com/questions/788323/change-runlevel-on-16-04
https://askubuntu.com/questions/323374/run-levels-only-at-start-up
https://askubuntu.com/questions/686700/no-difference-between-runlevel-3-and-5-in-ubuntu-15-04
http://www.pathbreak.com/blog/ubuntu-startup-init-scripts-runlevels-upstart-jobs-explained
https://wiki.debian.org/RunLevel
https://unix.stackexchange.com/questions/39411/why-does-debian-and-ubuntu-default-to-runlevel-2
https://stackoverflow.com/questions/16227792/runlevel-2-and-5-works-the-same-on-ubuntu
http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html
https://debian-administration.org/article/212/An_introduction_to_run-levels
为什么说Ubuntu的运行级别为2的更多相关文章
- ubuntu修改运行级别方法
Ubuntu系统设置启动级别的问题,因自己以前遇到过,故做过笔记记录了下来:Ubuntu.Debian系列与RedHat.CentOS启动级别含义有所区别:Ubuntu系列运行级别定义如下:0 – H ...
- ubuntu 修改运行级别
只转载了成功的, 具体参见原文 http://www.2cto.com/os/201308/237632.html 第一种方法:(内核级别的) Sudo vi /etc/default/grub ...
- 修改Ubuntu默认运行级别,启动字符界面
Ubuntu的默认开机的runlevel是2,可以用runlevel来查看当前的默认运行级别. debian系(ubuntu是基于debian)的Linux一直是用runlevel 2来默认启动,并且 ...
- Linux运行级别研究(转)
Linux系统中的运行级别 7种运行级别 运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统的运行模式,不同的运行模式下系统的功能也有所有不同.Linux 系统下通常分为7种 ...
- 关于Ubuntu运行级别、开机启动脚本的说明
关于Ubuntu运行级别.开机启动脚本的说明 目录简介 1.1介绍Ubuntu下面的自启动脚本目录 1.2 Linux操作系统运行级别的概念 1.3关于操作系统自启脚本的启动顺序 1.4 Lin ...
- 关于Ubuntu修改默认运行级别
第一种方法:(内核级别的) Sudo vi /etc/default/grub 修改GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 为:GRUB_CMDLINE ...
- ubuntu 运行级别initlevel
Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作.Ubuntu 的系统运行 ...
- Linux系统有7个运行级别(runlevel)
Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别 ...
- Linux入门:运行级别解析
Linux入门:运行级别解析 一.查看当前运行级别 Ubuntu中,runlevel命令 可以查看当前运行级别: CentOS中,who -r 命令查看当前运行级别: www.2cto.com ...
随机推荐
- [转]C语言文件操作函数大全(超详细)
fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const cha ...
- 实现div左右上下都居中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Hive扩展功能(九)--Hive的行级更新操作(Update)
软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这三部机, 每部主机的用户名都为centos ...
- jsp学习笔记 - 内置对象 session
1.session 主要用来用户的登录和注销 设置用户名,获取用户名 session.setAttribute("username","johnson"); s ...
- 怎么让Eclipse对html和js代码自动提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist修改Auto Activ ...
- Django - 自定义filter
自定义filter 自定义filter时,使用装饰器fileter 在html中,使用传参方式为: 参数1|函数名:参数2 并且函数和参数之间,不能有空格,如果有空格,会报错. filter和simp ...
- 【反向并查集、联通图】P1197 [JSOI2008]星球大战
题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧 ...
- C/C++野指针
野指针: 野指针不同于空指针,空指针是指一个指针的值为null,而野指针的值并不为null,野指针会指向一段实际的内存,只是它指向哪里我们并不知情,或者是它所指向的内存空间已经被释放,所以在实际使用的 ...
- UVA - 1620 Lazy Susan(逆序数)
题目: 把1~n(n≤500)放到一个圆盘里,每个数恰好出现一次.每次可以选4个连续的数字翻转顺序.问能不能变成1.2.3....n的顺序. 思路: 这样的题的规律真的是一点都不好推,看了网上的博客知 ...
- NumPy 学习笔记(四)
NumPy 算术函数: 1.numpy.reciprocal(arr) 返回参数逐个元素的倒数 2.numpy.power(one, two) 将第一个输入数组中的元素作为底数,计算它与第二个输入数组 ...