系统启动流程:
POST→bootsequence→bootloader(MBR)→kernel→initramfs(initrd)→rootfs→/sbin/init
init:
centos5:Sys V init
centos6:Upstart
centos7:Systemd
Systemd新特性:
系统引导时实现服务并行启动
按需激活进程
系统状态快照
基于依赖关系定义服务控制逻辑
核心概念unit:
通过配置文件进行标识和配置:文件中主要包含了系统服务(.service)、监听套接字(.socket)、保存的系统快照、以及其他与init相关的信息;
保存位置:
/usr/lib/systemd/system/*
/run/systemd/system/*:优先级高于上面
/etc/systemd/system/*:优先级高于上面
unit相当于centos6里/etc/init.d/目录中的脚本,不过unit没有执行权限,类似于配置文件;
unit类型:
service unit:扩展名为.service,用于定义系统服务;
target unit:扩展名为.target,用于模拟centos6中的运行界别概念;
device unit:扩展名为.device,用于用于定义内核识别的设备;
mount unit:扩展名为mount,用于定义文件系统挂载点;
socket unit:扩展名.socket,用于标识进程间通信;
snapshot unit:扩展名.snapshot,用于管理系统快照;
swap unit:扩展名.swap,用于标识swap设备;
automount unit:扩展名.automouont,用于定义文件系统的自动挂载点;
path unit:扩展名.path,用于定义文件系统中的一个文件或目录;
关键特性:
基于socket的激活机制:实现了socket与服务的分离,也就是说默认服务是没有启动的,当有人请求某服务时,systemd会通过处于监听中的socket来临时按需的激活某服务;
基于bus的激活机制;
基于device的激活机制:特定硬件接入系统时,systemd会检测其所需要的驱动或服务,然后去激活它;
基于path的激活机制:某个文件或目录中有数据时,会激活相应的服务或程序,也可以说是通过 监控某路径来决定是否激活相应服务,当路径中的数据改变时;
系统快照:可以将系统的当前状态保存至某文件中;
向后兼容sysv、init脚本;
不兼容特性:
systemctl命令固定不变;
非有systemctl命令启动的服务,systemctl无法与之通信,无法管理它们;
与centos6不同的是,当centos6 切换级别时,是通过开启所有以S开头的服务,关闭所有以K开头的服务,systemctl只能关闭已经启动的服务,而不是实现设定好的某些服务;
管理系统服务:
centos7:service unti (兼容之前的服务脚本)
systemctl COMMAND name.type
COMMAND:
start:启动服务
stop:关闭服务
restart:重启服务
enable:设置开机启动
disable:设置开机不启动
status:查看服务状态
is-active:查看某服务当前是否启动
list-units:查看已激活服务
--all:查看所有服务,包括未激活的
--type=type:显示指定类型的服务
list-unit-files:查看开机自启信息
name:服务名称
type:服务类型
service:服务
socket:套接字
path:路径
运行级别:
0 →runlevel0.target,poweroff.target
1 →runlevel1.target,rescue.target
2 →runlevel2.target,multi-user.target
3 →runlevel3.target,multi-user.target
4 →runlevel4.target,multi-user.target
5 →runlevel5.target,graphical.target
6 →runlevel6.traget,reboot.target
级别切换:
init N →systemctl isolate name.target
获取默认运行级别:
systemctl get-default
设置默认级别:
systemctl set-default name.target
其实就是删除/etc/systemd/system/目录中原本链接到/usr/lib/systemd/system/目录中的某一个name.target;然后建立新的链接关系;所以可以手动设定;
切换至紧急救援模式:
systemctl rescue
切换至emergency模式:比rescue更彻底的救援模式;
systemctl rescue
其他常用命令:
关机:
systemctl halt
systemctl poweroff
重启:
systemctl reboot
挂起系统:
systemctl suspend
快照:
systemctl hibernate
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删