设为首页 收藏本站
查看: 1112|回复: 0

[经验分享] Linux 初始化系统的运行级别

[复制链接]

尚未签到

发表于 2017-11-22 11:26:59 | 显示全部楼层 |阅读模式
  在 Linux 系统中,运行级别run level是指运维的级别,用于描述一种表明什么服务是可用的系统运行状态。
  运行级别 1 是严格限制的,仅仅用于系统维护;该级别下,网络连接将不可操作,但是管理员可以通过控制台连接登录系统。
  其他运行级别的系统允许任何人登录和使用,但是不同级别中可使用的服务不同。本文将探索如何配置运行级别,如何交互式改变系统运行级别以及修改该状态下可用的服务。
  Linux 系统的默认运行状态是一个在系统开机时使用的运行级别(除非有其他的指示),它通常是在 /etc/inittab 文件中进行配置的,该文件内容通常如下:
  id:3:initdefault
  包括 Debian 系统在内的一些系统,默认运行级别为 2,而不是上述文件中的 3,甚至都没有 /etc/inittab 文件。
  运行级别在默认情况下是如何被配置,其配置依赖于你所运行的 Linux 操作系统的具体发行版本。 例如,在某些系统中, 运行级别 2 是多用户模式,运行级别 3 是多用户模式并支持 NFS (网络文件系统)。 在另外一些系统,运行级别 2 – 5 基本相同,运行级别 1 是单用户模式。例如,Debian 系统的所用运行级别如下:
  0 = 停机
  1 = 单用户(维护模式)
  2 = 多用户模式
  3-5 = 同 2 一样
  6 = 重启
  在 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 命令将显示如下:
  $ 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 目录下的符号连接即可。
  还有一些其他的什么需要考虑?
  当改变系统运行级别时,你应该特别小心,确保不影响到系统上正在运行的服务或者正在使用的用户。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409462-1-1.html 上篇帖子: ssh登录时在参数中加入密码的解决方案 下篇帖子: Ubuntu 软件包管理APT
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表