systemd服务音频输出



我想要一个从systemd服务启动的python脚本来输出音频。

我有一个udev规则,它从模板启动systemd服务。然后模板启动一个带有两个参数(--device和设备路径)的python脚本

multiupload@.service文件:

[Unit]
Description=Mutiupload start service routine
[Service]
Type=oneshot
ExecStart=/path/to/script.py --device %I
[Install]
WantedBy=multi-user.target

在python脚本中,我使用音频文件调用cvlc、mpg123或ffplay来输出音频:

# cvlc does not like to be run as root
#audio_args = ["cvlc", "--play-and-exit", "/dir/to/audio/file"]
#mpg123 shits its pants when doing this
#audio_args = ["mpg123", "/dir/to/audio/file"]
#ffplay blacks out my screen? also no output
#audio_args = ["ffplay", "-autoexit", "/dir/to/audio/file"]
subprocess.call(audio_args)

所有这些在登录会话的终端上执行时都很好,但在通过systemd服务调用时不输出音频。

有什么办法可以从systemd服务调用的python脚本中输出?或者这在设计上是不可能的(系统服务不应该以这种方式与用户会话交互?)?

也许Mopidy会起作用,但我想使用尽可能少的组件。。。

感谢所有的想法!

由于您可以在登录会话中运行脚本,因此运行脚本似乎需要某种权限。你能提供的输出吗

systemctl status <yourservicefilename>

您也可以尝试在服务文件中设置User=root,并在服务文件提供WorkingDirectory

有关所有详细信息,请参阅链接。

最新更新