systemd服务

363 阅读3分钟

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支持的单元类型

Screenshot 2024-04-15 162259.png

service unit文件格式

service unit file文件通常由三部分组成:

[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等

[Service]:与特定类型相关的专用选项;此处为Service类型

[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

Unit段的常用选项

image.png

Service段的常用选项

启动命令

  • EnvironmentFile:指定当前服务的环境参数文件(路径),如 EnviromentFile=-/etc/sysconfig/xxx,连词号表示抑制错误,即发生错误时,不影响其他命令的执行。
  • Environment:后面接多个不同的 shell 变量,如 Environment=DATA_DIR=/dir/data
  • WorkingDirectory:设置服务运行的路径。
  • Exec*:各种与执行相关的命令。
  • ExecStart:定义启动服务时执行的命令。
  • ExecStop:定义停止服务时执行的命令。
  • ExecStartPre:定义启动服务前执行的命令。
  • ExecStartPost:定义启动服务后执行的命令。
  • ExecStopPost:定义停止服务后执行的命令。
  • ExecReload:定义重启服务时执行的命令。

启动类型

image.png

Install段的常用选项

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖

WantedBy:被哪些units所依赖,弱依赖

Also:安装本服务的时候还要安装别的相关服务

实验 用systemd管理 nginx

  1. 下载nginx源码包

image.png 2下载环境 yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3解压缩并运行,指定安装路径

1713177530210.png 4 make编译

5 make install

6vim/lib/systemd/system/nginx.service 在systme目录下建立service文件

image.png 7 systemctl daemon-reload 重新加载守护进程

8 systemctl start nginx

9 完成

image.png