多个目标都需要 Systemd 服务

多个目标都需要 Systemd 服务

有没有办法制作多个目标所需的服务(或具有多个安装指令),以便在安装时在所有位置创建符号链接。

我的示例是以下 systemd 文件

[Unit]
Description=Run script to fix-audio mappings

[Service]
Type=forking
ExecStart=/bin/bash -c '/usr/local/bin/fix-audio &'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

它的作用是运行一个脚本来修复我的机器的音频映射(如果没有它,声音仅来自低音炮 - 这是非常无用的)。不幸的是,在睡眠/挂起/休眠之后,映射似乎会重置,因此我还需要在醒来时触发此脚本。

有什么说法WantedBy=multi-user.target,sleep.target或者类似的吗?

我似乎找不到任何有关此的文档。或者,是否有更好的方法来实现我的需求?

答案1

是的,有,引用相关部分system.unit 的手册页:

WantedBy=, RequiredBy=该选项可以多次使用,或者可以给出以空格分隔的单位名称列表。当该单元安装时,会在每个列出的单元的 .wants/ 或 .requires/ 目录中创建一个符号链接系统控制启用。这具有将类型Wants=或的依赖性Requires=从列出的单元添加到当前单元的效果。主要结果是当前单元将在列出的单元启动时启动。详细信息请参见[Unit]部分中的Wants=和的描述。Requires=

WantedBy=foo.service在服务中bar.service主要相当于 别名=foo.service.wants/bar.service在同一个文件中。如果是模板单位,系统控制启用必须使用实例名称来调用,并且该实例将被添加到列出的单元的.wants/或列表中。.requires/例如WantedBy=getty.target在服务中将 [email protected]导致系统控制启用[电子邮件受保护] 创建到 的链接 。getty.target.wants/[email protected][email protected]

不过,如果您想为多个目标运行此命令,请确保在必要时通过Before=After=指令调整顺序(例如关闭或挂起)(手册页中也对此进行了解释;))。

相关内容