Linux30_systemV进程初始化服务与系统启动过程

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。

init程序的类型:

  • SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
  • Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
  • Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。


SystemV类型的init进程启动过程:

/sbin/init -> /etc/init/rcS.conf
/etc/init/rcS.conf -> /etc/rc.d/rc.sysinit(配置计算机初始化环境)
/etc/init/rcS.conf -> /etc/inittab (确定系统的默认运行级别)
/etc/init/rcS.conf -> /etc/rc.d/rc (运行该脚本,并传入运行级别参数)
运行相应的运行级别目录 /etc/rc[0-6].d/ 中的脚本
/rc[0-6].d/ 目录中的脚本依据设定好的优先级依次启动和关闭
/etc/rc.d/rc.local 中的程序执行


启动过程:
BIOS自检 -> 启动 GRUB -> 加载内核 -> 执行第一个进程 -> 配置系统初始环境

 

init 程序首先是需要读取配置文件 /etc/inittab。

 

在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 

它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,

rc.sysinit是每一个运行级别都要首先运行的重要脚本。

 

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

 

5:5:wait:/etc/rc.d/rc 5

这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,

/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

 

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

 

 

有个目录/etc/rc.d

rc.d 是 runlevel control directory的缩写
启动脚本都被放在/etc/rc.d/init.d
这些脚本都被ln命令链接到/etc/rc.d/rcn.d目录中(n是运行级别0-6)
# 0 - 停机(千万不回要把initdefault 设置为0)
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 重新启动 (千万不要把initdefault 设置为6)

将目录的名称设置为.d结尾是Unix/Linux系统的一种习惯,使得我们一看就知道是一个目录文件

 

最后讲一下:/etc/rc.d/rc.local文件
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。

 

linux启动管理:http://c.biancheng.net/linux_tutorial/12/

linux /etc/rc.d/目录的详解:https://blog.csdn.net/kunkliu/article/details/80834961

对systemV和systemd的简单理解(服务方面):https://www.cnblogs.com/ryzz/p/11673432.html

Linux下chkconfig命令详解:http://www.ttlsa.com/linux-command/linux-chkconfig-1/



 

posted @ 2020-05-10 23:10  Grooovvve  阅读(542)  评论(0编辑  收藏  举报