运行机制介绍

来自CloudWiki
跳转至: 导航搜索
  • 在了解了linux的目录结构和基本组成后,我们详细了解了它的运行机制,主要包括初始化init系统、系统的运行级别、系统的关闭方法。

初始化init系统

  • linux操作系统的启动,首先从BIOS开始,接下来lINUX引导程序,将内核映像加载到内存,进行内核初始化,内核初始化的最后一步就是启动PID为1的init进程,这个进程是系统的第一个进程,它负责产生其他所有用户进程。
  • 锦娘内核运行起来是毫无用途的,因此就需要一个系统能够定义管理和控制init进程的行为,并负责组织和运行许多独立的或者相关的初始化工作,从而让系统进入一个用户设定的运行模式中,这个系统就是init系统。
  • 大多数linux发行版的init系统,是和System V相兼容的,因此称为sysvinit。这是最早也最流行的init系统。在Centos7之前的系统中都采用这个系统,这个系统的概念简单清晰啊,主要依赖于Shell脚本,但他一次一个串行的启动进程导致启动带太为了能更快的启动系统慢,虽然在服务器上这个缺点不算什么,但是当064被应用到移动终端设备上时,这个缺点就变成了大问题。为了能更快的启动系统,开发者对sysvinit进行了不断的改进,先后出现了upstart和systemd这两个主要的新一代init系统,以Ubuntu为代表的林子发行版使用的是前者,而在CentOS7版本中已经默认开始使用,后者来管理系统,前者出现很早,而后者出现较晚,但发展更快,大有取代前者之势。

runlevel到target的改变

  • windows系统有安全运行模式和正常运行模式,这是两个不同的运行级别。同样,linux也有系统运行级别,并且linux系统的运行级别更加灵活和多样化。
  • sysvinit用术语“runlevel"来定义系统运行级别。在CentOS7

之前的系统中通常有七种运行级别,这些运行级别均在/etc/inittab文件中指定,sysvinit程序通过检查/etc/inittab文件中是否含有"initdefault"项来启动一个默认的运行级别。

  • 每个linux发行版的运行级别的定义都不太一样,但016这三个级别获得了共识,定义如下。
0表示关机模式,
1表示单用户模式,单用户模式下,只有系统管理员可以登陆。
6表示重启模式,也就是关闭所有运行的进程,然后重新启动系统。
  • 另外四个运行级别,CentOS发行版定义的含义如下。
2表示多用户模式,不支持文件共享啊,这种模式不常用。
3表示完全的多用户苗模式,支持n f s服务,这是最常用的用户模式,默认登录到系统的字符界面。
4表示基本不用的用户模式,可以实现某些特定的登陆请求。
5完全多用户模式,默认登录到x windows系统,也就是登录到linux图形界面。
  • 这些运行级别和linux中的init程序相互对应。例如,执行init 1命令系统就进入单用户模式。执行init 6命令系统将重新启动。
  • 在CentOS7中,由于采用了systemd管理体系,因此以前运行级别的概念被新的运行目标(target)所取代,target的命名类似于“multi-user.target"这种形式,比如原先的运行级别3,对应于新的多用户目标multi-user.target,原先的运行级别5,就对应于graphical.target,因为systemd机制中不再使用runlevel的概念,所以/etc/inittab也不再被系统使用。
  • 在新的systemd里,默认的target相当于以前的默认运行级别,通过软链接来实现。例如要查看运行级别与target的对应关系,可以使用:
[root@mycloud ~]# ll /lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Feb  2 22:22 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Feb  2 22:22 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Feb  2 22:22 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Feb  2 22:22 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Feb  2 22:22 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Feb  2 22:22 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Feb  2 22:22 /lib/systemd/system/runlevel6.target -> reboot.target

系统关机命令

  • shutdown
  • halt
  • reboot
  • init

下一节 系统服务管理工具systemd