systemd 模板声明

systemd 模板声明
MeteorCatsystemd 系统单元可以利用 @ 后面传递某些变量, 比如:
1 | sudo systemctl start mysql@slave.service |
这种就是 systemd 的模板服务, 用于调用可变的系统服务.
1 | [Unit] |
这里 systemd 内置不少可能需要的变量, 这些模板服务依赖大量系统环境, 所以编写的时候需要在 Description 打印好做好排查:
-
%n: 完整的 Unit 文件名字,包括 .service 后缀名 -
%N: 完整的 Unit 文件名字,不包括 .service 后缀名 -
%p: Unit 模板文件名中 @ 符号之前的部分,不包括 @ 符号 -
%P: Unit 模板文件名中 @ 符号之前的部分,包括 @ 符号 -
%i: Unit 模板文件名中 @ 符号之后的部分,不包括 @ 符号和 .service 后缀名 -
%I: Unit 模板文件名中 @ 符号之后的部分,包括 .service 后缀名 -
%c: systemd 的 slice 地址, 也就是CGroup该值 -
%u: 运行服务的用户,如果 Unit 文件中没有指定,则默认为 root, 也就是echo $USER -
%U: 运行服务的用户 ID, 也就是echo $UID环境变量的值 -
%g: 运行服务的用户组,如果 Unit 文件中没有指定,则默认为 root 分组 -
%G: 运行服务的用户 ID, 也就是echo $GROUPS环境变量的值 -
%H: 实际运行节点的主机名, 也就是echo $HOSTNAME环境变量的值 -
%h: 运行服务的用户 Home 目录,即echo $HOME环境变量的值 -
%s: 运行服务的用户默认 Shell 类型,即echo $SHELL环境变量的值 -
%v: 内核版本,即uname -r命令输出的内容 -
%b: Boot ID,这是一个随机数,每个节点各不相同,并且每次节点重启时都会改变(字符串) -
%t: 用户运行的状态目录,CGROUP记录的启动用户 slice 目录, 一般位于/run/user/xxxx -
%m: 实际运行节点的 Machine ID,和%b类似, 用于辨识设备 -
%%:%字符量, 防止被转移成内部的变量
基本上用的最多就是上面这几个模板变量.




