关于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去配置各种服务。在启动过程中,就会执行我们对应的级别下面的脚本。
额。貌似越说越让小白迷糊,这些在有了一定的基础后,大家慢慢都会了解,这里就先说到这么多。