1.17. 使用实例化单元
您可以使用单个 systemd 模板配置来简化多个服务实例的管理。
要管理服务的多个实例,您可以使用单个模板配置。您可以为单元定义一个通用模板,并以 @ 表示,并在运行时使用特定参数生成多个单元实例。通过使用 Requires 或 Wants 选项或 systemctl start 命令,您可以开始从另一个单元文件实例化单元。
<template_name>@<instance_name>.service
<template_name> 代表模板配置文件的名称。将 <instance_name> 替换为单元实例的名称。多个实例可以指向带有通用于单元所有实例的配置选项的同一个模板文件。模板单元名称具有以下格式:
<unit_name>@.service
例如,单位文件中的以下 Wants 设置:
Wants=getty@ttyA.service getty@ttyB.service
有了这个命令,systemd 会搜索给定的服务单元。如果没有找到这样的单元,@ 和类型后缀之间的部分将被忽略。systemd 搜索 getty@.service 文件,从中读取配置并启动服务。
例如,getty@.service 模板具有以下指令:
[Unit]
Description=Getty on %I
...
[Service]
ExecStart=-/sbin/agetty --noclear %I $TERM
...
当 getty@ttyA.service 和 getty@ttyB.service 是从 getty@.service 模板实例化时,Description=Getty on %I 被解析为 Getty on ttyA 和 Getty on ttyB。