systemd 是什么
systemd是系统和服务管理器,也是 Linux 操作系统中最常用的初始化系统之一。总的来说,使用 systemd 可以更加简单灵活地管理各种系统服务,它提供了统一的命令行工具和配置文件格式,使得对系统和服务的管理更加一致和简化。用户可以通过 systemctl 命令来控制 systemd 系统和管理服务。
Systemd新特性
-
系统引导时实现服务并行启动
-
按需启动守护进程
-
自动化的服务依赖关系管理
-
同时采用socket式与D-Bus总线式激活服务
-
socket与服务程序分离
-
向后兼容sysv init脚本
-
使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
-
systemctl无法与之通信和控制
-
系统状态快照
systemd 核心概念:unit
uint表示不同类型的systemd对象,通过配置文件进行标识和配置:文件中主要包含系统服务,监听socket,保存的系统快照以及其他与init相关的信息。 systemd单元文件最初默认存放在 /lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。
systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。
service unit文件格式
service unit file文件通常由三部分组成:
[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
[Service]:与特定类型相关的专用选项;此处为Service类型
[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
Unit段的常用选项
Service段的常用选项
启动命令
- EnvironmentFile:指定当前服务的环境参数文件(路径),如
EnviromentFile=-/etc/sysconfig/xxx,连词号表示抑制错误,即发生错误时,不影响其他命令的执行。 - Environment:后面接多个不同的 shell 变量,如
Environment=DATA_DIR=/dir/data。 - WorkingDirectory:设置服务运行的路径。
- Exec*:各种与执行相关的命令。
- ExecStart:定义启动服务时执行的命令。
- ExecStop:定义停止服务时执行的命令。
- ExecStartPre:定义启动服务前执行的命令。
- ExecStartPost:定义启动服务后执行的命令。
- ExecStopPost:定义停止服务后执行的命令。
- ExecReload:定义重启服务时执行的命令。
启动类型
Install段的常用选项
Alias:别名,可使用systemctl command Alias.service
RequiredBy:被哪些units所依赖,强依赖
WantedBy:被哪些units所依赖,弱依赖
Also:安装本服务的时候还要安装别的相关服务
实验 用systemd管理 nginx
- 下载nginx源码包
2下载环境
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
3解压缩并运行,指定安装路径
4 make编译
5 make install
6vim/lib/systemd/system/nginx.service
在systme目录下建立service文件
7 systemctl daemon-reload 重新加载守护进程
8 systemctl start nginx
9 完成