,了解运行级别是如何配置的,如何改变系统运行级别,修改运行在相应状态下的服务。在Linux系统中,运行级别是指运维级别,用来描述系统运行状态,表示有哪些服务可用。运行级别1受到严格限制,仅用于系统维护;在此级别,网络连接将无法运行,但管理员可以通过控制台连接登录系统。其他运行级别允许任何人登录和使用系统,但不同级别提供不同的服务。本文探讨了如何配置运行级别、如何以交互方式更改系统运行级别以及修改在该状态下可用的服务。Linux系统默认的运行状态是系统开机时使用的运行级别(除非另有说明),通常配置在/etc/inittab文件中,该文件的内容通常如下:id:3:initdefaultincludes有些系统,包括Debian系统,上面文件中默认运行级别为2,而不是3,并且没有/etc/inittab文件。默认情况下如何配置运行级别取决于您运行的Linux操作系统的特定分布。例如,在某些系统上,运行级别2是多用户模式,运行级别3是多用户模式,并且支持NFS(网络文件系统)。在其他系统上,运行级别2-5本质上是相同的,运行级别1是单用户模式。例如,Debian系统使用以下运行级别:0=关机1=单用户(维护模式)2=多用户模式??3-5=与26相同=重启在Linux系统上,运行级别3用于On的共享文件系统其他系统,只需更改系统的运行级别即可方便地启动和停止文件系统共享。将系统从运行级别2更改为3将允许文件系统共享,而从运行级别3更改为2将不支持文件系统共享。系统在某个运行级别运行哪些进程取决于目录/etc/rc?.d的内容,其中?可以是2、3、4或5(对应相应的运行级别)。在下面的例子(Ubuntu系统)中,由于这些目录的配置是一样的,所以我们会看到上面4个级别对应的目录的内容是一致的。/etc/rc2.d$lsREADMES20smartmontoolsS50sanedS99grub-commonS20kerneloopsS20speech-dispatcherS70dns-cleanS99ondemandS20rsyncS20sysstatS70pppd-dnsS99rc.local/etc/rc2.d$cd../rc3.d/etc/rc3.d$lsREADMES20smartmontoolsS50sanedS99grub-commonS20kerneloopsS20speech-dispatcherS70dns-cleanS99ondemandS20rsyncS20sysstatS70pppd-dnsS99rc.local/etc/rc3.d$cd../rc4.d/etc/rc4.d$lsREADMES20smartmontoolsS50sanedS99grub-commonS20kerneloopsS20speech-dispatcherS70dns-cleanS99ondemandS20rsyncS20sysstatS70pppd-dnsS99rc.local/etc/rc4/etc/5cd.5cd...d$lsREADMES20smartmontoolsS50sanedS99grub-commonS20kerneloopsS20speech-dispatcherS70dns-cleanS99ondemandS20rsyncS20sysstatS70pppd-dnsS99rc.local这些文件是什么?它们是指向用于在/etc/init.d目录中启动服务的脚本的符号链接。这些文件的文件名很重要,因为它们决定了脚本文件的执行顺序,例如,S20脚本在S50脚本之前运行。$ls-ltotal4-rw-r--r--1rootroot677Feb162016READMElrwxrwxrwx1rootroot20Aug3014:40S20kerneloops->../init.d/kerneloopslrwxrwxrwx1rootroot15Aug3014:40S20rsync->../init.d/rsynclrwxrwxrwx1rootroot23Aug3016:10S20smartmontools->../init.d/smartmontoolslrwxrwxrwx1rootroot27Aug3014:40S20Speech-disPatcher->../init.d/segresspatcherlrwxrwxrwxrwxrwx1rootroot17aug3114:12S20SysStat->../>../.d/dns-cleanlrwxrwxrwx1rootroot18Aug3014:40S70pppd-dns->../init.d/pppd-dnslrwxrwxrwx1rootroot21Aug3014:40S99grub-common->../init.d/grub-commonlrwxrwxrwx1rootroot18Aug3014:40S99ondemand->../init.d/ondemandlrwxrwxrwx1rootroot18Aug3014:40S99rc.local->../init.d/rc.local正如您所想象的,目录/etc/rc1.d对于运行级别1是特殊的。它包含指向一组非常不同的脚本的符号链接。另请注意,其中一些脚本以K开头,而另一些则像其他运行级别脚本一样以S开头。这是因为系统进入单用户模式时需要停止一些服务。但是,当这些以K开头的符号链接指向同一个以S的其他级别开头的符号链接文件时,K(kill)意味着该脚本将以指示其停止的参数执行,而不是以启动参数执行。/etc/rc1.d$ls-ltotal4lrwxrwxrwx1rootroot20Aug3014:40K20kerneloops->../init.d/kerneloopslrwxrwxrwx1rootroot15Aug3014:40K20rsync->../init.d/rsynclrwxrwxrwx1rootroot15Aug3014:40K20saned->../init.d/sanedlrwxrwxrwx1rootroot23Aug3016:10K20smartmontools->../init.d/smartmontoolslrwxrwxrwx1rootroot27Aug3014:40K20speech-dispatcher->../init.d/speech-dispatcher-rw-r--r--1rootroot369Mar122014READMElrwxrwxrwx1rootroot19Aug3014:40S30killprocs->../init.d/killprocslrwxrwxrwx1rootroot19Aug3014:40S70dns-clean->../init.d/dns-cleanlrwxrwxrwx1rootroot18Aug3014:40S70pppd-dns->../init.d/pppd-dnslrwxrwxrwx1rootroot16Aug3014:40S90single->../init.d/single您可以更改系统的默认运行级别,虽然这很少使用。例如,通过修改上面提到的/etc/inittab文件,可以将Debian系统的默认运行级别配置为3(而不是2),以下是该文件的示例:id:3:initdefault:Onceyou修改后重启系统,runlevel命令会显示如下:$runlevelN3另一种方法,使用init3命令,也可以改变系统的运行级别(无需重启即可立即生效),runlevel命令的输出是:$runlevel23当然,除非你修改了系统默认级别的/etc/rc?.d目录下的符号链接,使系统默认运行在修改后的运行级别下,否则很少需要通过修改系统的运行级别创建或修改/etc/inittab文件。Linux系统中如何使用运行级别?为了回顾系统中运行级别的使用方式,这里有一些关于运行级别的快速问答问题:如何查询系统的当前运行级别?使用运行级别命令。如何查看哪些服务进程与特定运行级别相关联?查看与该运行级别关联的运行级别开始目录(例如,运行级别2的/etc/rc2.d)。如何查看系统的默认运行级别?首先检查/etc/inittab文件是否存在。如果不存在,执行runlevel命令查询,一般已经在这个运行级别了。如何更改系统运行级别?使用init命令(如init3)临时改变运行级别,通过修改或创建/etc/inittab文件***.您可以更改在特定运行级别运行的服务吗?当然,通过改变对应的/etc/rc?.d目录下的符号链接。还有什么要考虑的吗?更改系统运行级别时,应特别注意不要影响系统上运行的服务或使用它们的用户。(标题图片:VincentDesjardins(CCBY2.0))
