systemd介绍
systemd是Liunx的启动守护进程,已被大多数Liunx发行版所采用。相较于之前被采用的init进程串行启动,systemd进程采用并行启动且为系统启动管理提供了成套的方案。 Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。
第一步 启动 Target 确认级别
内核加载之后,启动计算机的时候,需要启动大量的 Unit。Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。 传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。不同的是,RunLevel 是互斥的,不可能多个 RunLevel 同时启动,但是多个 Target 可以同时启动。
第二步 启动服务
每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。 Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/lib/systemd/system/,真正的配置文件存放在那个目录。 systemctl enable命令用于在上面两个目录之间,建立符号链接关系。 如果配置文件里面设置了开机启动,systemctl enable命令相当于激活开机启动。 与之对应的,systemctl disable命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
配置文件的区块
[Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。 [Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。 [Service]区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。
参考基础知识:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
systemd与init进程的主要差别
(1)默认的 RunLevel(在/etc/inittab文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target,通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)。 (2)启动脚本的位置,以前是/etc/init.d目录,符号链接到不同的 RunLevel 目录 (比如/etc/rc3.d、/etc/rc5.d等),现在则存放在/lib/systemd/system和/etc/systemd/system目录。 (3)配置文件的位置,以前init进程的配置文件是/etc/inittab,各种服务的配置文件存放在/etc/sysconfig目录。现在的配置文件主要存放在/lib/systemd目录,在/etc/systemd目录里面的修改可以覆盖原始设置。
基本命令使用
# 查看systemd版本
systemctl --version
# 开启服务
systemctl enable xxx.service
# 关闭服务
systemctl disable xxx.service
# 设置启动时的默认 Target
sudo systemctl set-default multi-user.target
# 查看某个 Unit 的日志
sudo journalctl -u nginx.service
# 查看启动耗时
systemd-analyze
#查看每个服务的启动耗时
systemd-analyze blame
# 列出启动矢量图,可用浏览器查看
systemd-analyze plot>boot.svg
# 列出一个 Unit 的所有依赖
systemctl list-dependencies nginx.service
systemd相关目录归类
# 判断运行级别
/etc/systemd/system/default.target
# systemd 读取配置文件
/etc/systemd/system/
# 启动脚本的位置
/lib/systemd/system/
# 修改可以覆盖原始配置文件设置
/etc/systemd
# 配置文件主要存放
/lib/systemd
# 各种服务的配置文件
/etc/sysconfig
|