一、centos5,6,7启动流程与之前的差别
1、POST 计算机要想开机,他必须通过BIOS或UEFI对基本的输入输出硬件设备进行检查,检查内存,CPU,硬盘等等。 2、选择启动顺序(安装时需要选择) 当通过自检后,就需要选择需要用什么引导方式,引导方式大致为:光盘启动、硬盘启动、网络启动、U盘启动,这些只是在安装系统时选择,安装好系统后默认从硬盘启动 3、选择好引导方式后就开始从硬盘的前446字节也就是BootLoader用来引导用户选择启动 的系统或不同版本内核。 centos5.6中,主要的文件放与/boot/grub/grub.cfg引导内核加载文件和/boot/grub/目录下在stage1,stage1.5,stage2阶段所需要的二进制文件 centos7,文件放在/boot/gub2/grub.cfg引导内核加载文件和/boot/grub/目录下stage1,stage1.5,stage2阶段所需要的二进制文件 4、加载内核 利用grub.cfg文件加载硬件启动程序,以只读的方式加载根文件系统,,而在centos5,6在这一步还没有文件系统,而centos7在这一步开始就已经挂载了xfs文件系统也就是stage2步骤 5、运行用户空间的第一个应用程序 centos5:sysv init 配置文件/etc/inittab centos6:upstart 配置文件/etc/inittab; /etc/init/.conf(主要) centos7:systemd 配置文件:/etc/systemd/system;/usr/lib/systemd/system/ 在centos5,6的第一个父进程名字还是init,而在centos7中第一个父进程则变成systemd 6、在centos5主要根据/etc/inittab文件进行配置 初始化运行级别 调用系统初始化脚本(/etc/rc.d/rc.sysinit)进行系统初始化 对应运行级别的脚本目录 捕获某个关键字顺序 定义UPS电源终端/恢复脚本 在虚拟控制台生成getty 在运行级别5初始化X centos6和centos5基本类似,只是将inittab文件拆分为多个文件,存放在/etc/init/*.conf 根据/etc/inittab文件确定启动哪一级别,然后根据启动级别按照/etc/rc.d/rc开机将所有S开头的全部开一遍,将所有K开头的全部关一遍来做到根据启动级别启动服务 centos7,则是根据/etc/systemd/system/default.target指向的启动级别,根据运行级别所需要启动的target来启动,并不是跟之前版本一样,将每一个服务在每一个运行级别的目录下放一边,互不干扰,而centos7则是,在当前服务只装当前系统 所必须安装的包,然后一级一级的往上安装,不会出现重复的服务,换句话说,centos7不存在当前的是哪一个运行级别这一说法,因为在graphical.target(图形化)模式下也有multi-user.target(之前版本的3模式)。
二、systemd介绍
systemd服务是系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,服务器进程和其他进程,在CentOS7中,在系统启动时,将之前的串行启动服务改变成了并行,所以CentOS7系统比之前系统都要启动的快。 systemd新特性 系统引导时实现服务并行启动 按需启动守护进程(只有在需要该服务时,才会启动该服务) 自动化的服务依赖关系管理(若启动服务有其他依赖的服务,则自动启动依赖服务) 同时采用socket式和D-Bus总线式激活服务 系统状态快照
三、unit核心概念
unit表示不同类型的systemd对象,通过配置文件进行标识和配置,文件中主要包括含了系统服务、监听socket、保存系统快照以及其它与init相关的信息
四、相关配置文件
在centos7中,像之前系统中的/etc/init.d/目录下的文件已经几乎没有了,剩下的服务在管理上也已经不是init在管理,已经改变成systemd在管理。 /usr/lib/systemd/system目录下主要存放着每一个服务主要的配置文件类似于之前系统中的/etc/init.d目录 /run/systemd/system目录主要存放着系统执行过程中所产生的服务脚本,比上面目录优先运行 /etc/systemd/sysyem目录主要存放着管理员建立的执行脚本,类似于之前版本中的/etc/rc.d/rcX.d/目录下的脚本文件,比上面的目录优先级都高
五、unit类型
使用命令systemctl -t help命令可以查看系统中都有哪些unit类型,文件类型的区别在于后缀名
六、CentOS7服务管理
查看当前服务状态命令 systemctl list-unit-files --type service --all 服务状态说明 loaded:unit配置文件已处理 active(running):一次或多次持续处理运行 active(exited):成功完成一次性配置 active(waiting):运行中,等待一个时间 inactive:不运行 enabled:开机启动 disabled:开机不启动 static:开机不启动,但可被另一个启动的服务激活 启动服务的变化 在之前系统中的服务管理可以是两种方式 service 服务名 start|stop|restart,也可以使用/etc/init.d/服务名 start|stop|restart两种方式,而CentOS7系统中之前的方式还可以使用,只是他们所调用的命令已经变成了systemctl systemctl命令语法 systemctl start|stop|restart 服务名1 服务名2 systemctl命令与之前版本的service命令相比的优点在于systemctl命令可以同时启动多个服务 开机自启服务变化 chkconfig --list 查看当前可用该命令可以控制的服务,不过该命令的实质也是在调systemctl命令 也可以使用chkconfig 服务名 on|off改变开启是否自动启动 而大多数服务已经变成使用systemctl enable|disable 服务名来设置开始是否启动使用systemctl is-enabled 服务名来查看开机是否自动启动 而开机自动启动的实质就是在/etc/systemd/system目录下创建一个连接文件 条件式启动服务 若服务已启动则才会重启,否则不做任何操作
systemctl try-restart 服务名
重载或重启服务,先加载,在启动
systemctl reload-or-restart 服务名
重载或条件是重启服务
systemctl reload-or-try-restart 服务名
禁用和启用某服务 禁用和启用的实质就是在/etc/systemd/system目录下创建一个链接到/dev/null的软链接使服务不能启动,启用就是将软链接删除 禁用自动和手动启动
systemctl mask 服务名‘
取消禁用
systemctl unmask 服务名
查看服务状态 查看某服务当前是否已激活
systemctl is-active 服务名
查看当前所有已经激活的服务
systemctl list-units -t service
查看所有服务
systemctl list-units -t service -a
查看所有服务开机自启状态 在之前版本中使用的是chkconfig --list而在centos7中则使用systemctl list-unit-files -t service 查看某服务是否开机自启
systemctl is-enabled 服务名
验证当前服务是否活动
systemctl is-actice 服务名
查看服务之间的依赖关系
systemctl list-dependencies 服务名
列出所有单元状态
systemctl或systemctl list-units
只显示服务单元的状态
systemctl -type=service systemctl -l status 服务名