关于centos下的运行模式及其作用

前几天看了一篇介绍关于centos6运行模式的文章,但是在centos7中却没找到对应的文件,因此在这里进行简单的介绍。首先我们要知道运行模式也就是运行级别,在linux中我们运行 ps -ef这个命令的时候,我们可以看到很多进程的父进程ID是1,这个进程就是1。这个文件的配置文件为/etc/inittab ,一般来说,centos6中只需要修改这个配置文件就能修改运行级别,但是吧,我们发现centos7中的这个文件全都是注释文件。下图就是centos中的这个文件。

这个文件我们修改又有什么用?于是我们就只能通过命令去修改,下图是centos7中运行级别对应表

设置运行级别命令的格式为:systemctl command unit.target

systemctl get-default   获得当前的运行级别

systemctl set-default multi-user.target    设置默认运行级别为mulit-user

systemctl isolate multi-user.target    在不重启的情况下,切换到mulit-user下

systemctl isolate graphical.target    在不重启的情况下,切换到graphical下

如图,runlevel命令下面的两个数字分别表示之前的运行级别,现在的运行级别。

systemctel get-default表示获取开机默认运行级别。

systemctl set-default multi-user.target,设置默认运行级别。修改完下次登录的时候,就是字符界面而不是图形界面了。

介绍了这么久的,运行级别的修改,那这个运行级别到底原理是什么呢?

我们先去/etc/rc.d/init.d下面看一下,我们会发现有个functions文件,我们再打开看一下,会看见下面这些代码

  1 # -*-Shell-script-*-
  2 #
  3 # functions This file contains functions to be used by most or all
  4 #       shell scripts in the /etc/init.d directory.
  5 #
  6 
  7 TEXTDOMAIN=initscripts
  8 
  9 # Make sure umask is sane
 10 umask 022
 11 
 12 # Set up a default search path.
 13 PATH="/sbin:/usr/sbin:/bin:/usr/bin"
 14 export PATH
 15 
 16 if [ $PPID -ne 1 -a -z "$SYSTEMCTL_SKIP_REDIRECT" ] && \
 17         [ -d /run/systemd/system ] ; then
 18     case "$0" in
 19     /etc/init.d/*|/etc/rc.d/init.d/*)
 20         _use_systemctl=1
 21         ;;
 22     esac
 23 fi

我们看到第三行和第四行,我们就可以知道在目录/etc/rc.d/init.d下面就很多脚本程序,一般我们就叫他程序。我们在rc.d目录下面还会看见rc0.d到rc6.d七个目录,这就对应着系统的七个运行级别。rcn.d目录下面的一些符号都是链接文件,这些链接文件都是指向init.d目录下的脚本文件,命名规格一般为K/S+nn+服务名。最后系统就会根据指定的运行级别进入对应的rcn.d目录,并按照文件名顺序检索下的链接文件。对于K开头的文件,系统就会终止对应的服务。对于S开头的文件,系统将启动对应的服务。

说了这么多,我们到现在都不明白这货有啥作用吧。怎么说呢,其实吧这七个级别就是为了更好的控制操作系统,因为在不同级别的我们所需要使用的运行的服务不一样,如果每个级别都一样会比较麻烦。对于linux系统来说,第一个加载的就是内核,然后就是init进程。init是除去内核第一个加载的程序,因此服务ID一般为1。首先init进程会读取inittab文件,决定要启动的运行级别。然后执行/ect/rc.d/rc.sysinit去配置各种服务。在启动过程中,就会执行我们对应的级别下面的脚本。

额。貌似越说越让小白迷糊,这些在有了一定的基础后,大家慢慢都会了解,这里就先说到这么多。

 

posted on 2018-11-17 11:27  取名字真难呀  阅读(834)  评论(0编辑  收藏  举报

导航