为什么 systemd 会在定义的“After=”之前启动服务?

为什么 systemd 会在定义的“After=”之前启动服务?

所以我有一个运行 bookworm 的树莓派 PI OS lite,并且我在上面安装了 PulseAudio。该 pi 被设置为我电视的月光设备(感谢三星提供 EoL SteamLink!)。它所要做的就是启动并自动启动月光,目前正是如此。这一点工作得很好。

问题...

因为 pi 运行的是 lite 操作系统,而 Moonlight 不需要像它自己运行的那样启动和运行 X11 接口,这意味着必须手动安装脉冲音频,因为 Moonlight 现在默认会寻找该接口。

默认情况下,Pulse Audio 设置为仅在用户登录时启动。因此,由于 Moonlight 不需要 pi 登录,并且作为 systemd 服务自动启动,这意味着音频尚未准备好它,并且启动流时不会发出声音。

因此,我还创建了一个pulseaudio systemd服务,作为系统服务启动,无论用户如何,按照此处提到的说明(https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

我的脉冲音频服务文件...

[Unit]
Description=PulseAudio system server
After=bluetooth.service

[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --log-target=journal --disallow-module-loading --disallow-exit
Restart=on-failure

[Install]
WantedBy=default.target

当我启用此服务并重新加载并重新启动系统时,如果我随后获得服务启动的 systemd 图,它表明该服务是在我定义的蓝牙服务之前启动的。

系统图

我尝试更改为 bluetooth.target,但这也没有任何影响。

我不明白...

相关内容