操作 Linux 的运行级别

作者: Sandra Henry-Stocker
译者: penghuster
来源: 阅读原文

了解运行级别是如何配置, 如何改变系统运行级别以及修改对状态下运行的服务.


在 Linux 系统中, 运行级别是可操作的, 该级别用于描述一种系统状态, 在该状态下哪些服务是有效的.

运行级别 1 是严格限制的, 仅仅用于系统维护; 该级别下, 网络连接将不可操作, 但是管理员可以通过一个控制台连接登录系统.

其他运行级别的系统允许任何人登录和使用, 但是不同级别中可使用的服务不同. 本文将探索如何配置运行级别, 如何改变系统运行级别以及修改对状态下运行的服务.

Linux 系统的默认的运行状态通常是在 /etc/inittab 文件(除非有其他的指示, 否则该文件将在系统启动时被使用. )中进行配置的, 该文件内容通常如下:
id:3:initdefault
一些系统, 包括 Debian 系统, 默认运行级别为 2, 而不是上述文件中的 3, 另外少数系统甚至都没有 /etc/inittab 文件.

运行级别在默认情况下是如何被配置, 其配置依赖于你所运行的 Linux 操作系统的具体发行版本. 在部分系统, 例如, 运行级别 2 是多用户, 运行级别 3 是多用户并支持 NFS. 在其他系统, 运行级别 2 - 5 基本相同, 运行级别 1 是单用户模式. 例如, Debian 系统的所用运行级别如下:

0 = halted
1 = single user (maintenance mode)
2 = multi-user mode
3-5 = same as 2
6 = reboot

在 Linux 系统上, 运行级别 3 支持系统间共享文件的共享文件系统, 可以方便地通过改变系统的运行级别来改变系统支持共享文件系统
与否. 系统从运行级别 2 改变到 3 将允许文件系统共享, 反之从运行级别 3 改变到 2 则不支持文件共享.

在对应的运行级别中, 系统运行哪些进程依赖于目录 /etc/rc?.d 目录的内容, 其中 "?" 可能是 2, 3, 4, 5 (对应于相应的运行级别).

在以下示例中的 Ubuntu 系统中, 由于这些目录的配置是相同的, 我们将看见上述 4 个级别对应的目录中的内容是一致的.

/etc/rc2.d$ ls
README         S20smartmontools      S50saned      S99grub-common
S20kerneloops  S20speech-dispatcher  S70dns-clean  S99ondemand
S20rsync       S20sysstat            S70pppd-dns   S99rc.local
/etc/rc2.d$ cd ../rc3.d
/etc/rc3.d$ ls
README         S20smartmontools      S50saned      S99grub-common
S20kerneloops  S20speech-dispatcher  S70dns-clean  S99ondemand
S20rsync       S20sysstat            S70pppd-dns   S99rc.local
/etc/rc3.d$ cd ../rc4.d
/etc/rc4.d$ ls
README         S20smartmontools      S50saned      S99grub-common
S20kerneloops  S20speech-dispatcher  S70dns-clean  S99ondemand
S20rsync       S20sysstat            S70pppd-dns   S99rc.local
/etc/rc4.d$ cd ../rc5.d
/etc/rc5.d$ ls
README         S20smartmontools      S50saned      S99grub-common
S20kerneloops  S20speech-dispatcher  S70dns-clean  S99ondemand
S20rsync       S20sysstat            S70pppd-dns   S99rc.local

这些都是什么文件? 他们都是指向 /etc/init.d 目录下启动服务的符号连接. 这些文件的文件名是重要的, 因为他们决定了这些脚本文件的执行顺序, 例如, S20 脚本是在 S50脚本前面运行.

$ ls -l
total 4
-rw-r--r-- 1 root root 677 Feb 16  2016 README
lrwxrwxrwx 1 root root  20 Aug 30 14:40 S20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  15 Aug 30 14:40 S20rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  23 Aug 30 16:10 S20smartmontools -> ../init.d/smartmontools
lrwxrwxrwx 1 root root  27 Aug 30 14:40 S20speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root  17 Aug 31 14:12 S20sysstat -> ../init.d/sysstat
lrwxrwxrwx 1 root root  15 Aug 30 14:40 S50saned -> ../init.d/saned
lrwxrwxrwx 1 root root  19 Aug 30 14:40 S70dns-clean -> ../init.d/dns-clean
lrwxrwxrwx 1 root root  18 Aug 30 14:40 S70pppd-dns -> ../init.d/pppd-dns
lrwxrwxrwx 1 root root  21 Aug 30 14:40 S99grub-common -> ../init.d/grub-common
lrwxrwxrwx 1 root root  18 Aug 30 14:40 S99ondemand -> ../init.d/ondemand
lrwxrwxrwx 1 root root  18 Aug 30 14:40 S99rc.local -> ../init.d/rc.local

如你所想, 目录 /etc/rc1.d 因运行级别 1 的特殊而不同. 它包含的符号链接指向许多不同的脚本集合. 同样也将注意到其中一些脚本以 K开头命名, 而另一些与其他运行级别脚本一样以 S 开头命名.这是因为当系统进入单用户模式时, 一些服务需要停止. 然而这些 K 开头的符号链接与其他级别对应的 S 开头的符号链接两者指向同一文件. K (kill) 表示这个脚本将执行停止对应服务的命令而不是启动.

/etc/rc1.d$ ls -l
total 4
lrwxrwxrwx 1 root root  20 Aug 30 14:40 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  15 Aug 30 14:40 K20rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  15 Aug 30 14:40 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  23 Aug 30 16:10 K20smartmontools -> ../init.d/smartmontools
lrwxrwxrwx 1 root root  27 Aug 30 14:40 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Mar 12  2014 README
lrwxrwxrwx 1 root root  19 Aug 30 14:40 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 30 14:40 S70dns-clean -> ../init.d/dns-clean
lrwxrwxrwx 1 root root  18 Aug 30 14:40 S70pppd-dns -> ../init.d/pppd-dns
lrwxrwxrwx 1 root root  16 Aug 30 14:40 S90single -> ../init.d/single

你可以改变系统的默认运行级别, 尽管这很少被用到. 例如, 通过修改前文中提到的 /etc/inittab 文件, 你能够配置 Debian 系统的默认运行级别为3 (替代 2), 以下是该文件示例:
id:3:initdefault:
一旦你修改完成并重启系统, 执行运行级别命令将显示如下:

$ runlevel
N 3

另外一种可选方式, 使用 init 3 命令, 你也能改变系统运行级别(且无需重启立即生效), 另外 runlevel 命令的打印输出为:

$ runlevel
2 3

当然, 除非你修改了系统默认级别的 /etc/rc?.d 目录下的符号链接, 使得系统默认运行在一个修改的运行级别. 否则很少需要通过创建或修改 /etc/inittab 文件改变系统的运行级别.

在 Linux 系统中如何使用运行级别?

为了扼要重述在系统中如何使用运行级别. 下面有几个关于运行级别的快速问答问题:

如何查询系统当前的运行级别?

使用 runlevel 命令.

如何查看特定运行级别所关联的服务进程?

查看与该运行级别关联的运行级别开始目录(例如, /etc/rc2.d 对应于运行级别 2).

如何查看系统的默认运行级别?

首先, 查看 /etc/inittab 文件是否存在. 如果不存在, 就执行 runlevel 命令查询.

如何改变系统运行级别?

init 命令(例如, init 3) 临时改变运行级别, 通过修改或创建 /etc/inittab 文件永久改变其运行级别.

你能改变特定运行级别下运行的服务么?

当然, 通过改变对应的 /etc/rc?.d 目录下的符号连接即可.

还有一些其他的什么需要考虑?

当改变系统运行级别时, 你应该特别小心, 确保不影响到系统上正在运行的服务或者正在使用的用户.


版权声明:自由转载-非商用-非衍生-保持署名创意共享3.0许可证

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,097评论 9 467
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,127评论 2 34
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,693评论 0 10
  • 玻璃心自身没有温度,确可以被温暖;一旦不被保护,也可能摔的粉碎。
    智子一一阅读 246评论 0 0