【问题标题】:systemd service audio outputsystemd 服务音频输出
【发布时间】:2016-11-30 14:22:18
【问题描述】:

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

我有一个从模板启动 systemd 服务的 udev 规则。然后模板启动一个带有两个参数(--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 会起作用,但我想使用尽可能少的组件...

感谢所有想法!

【问题讨论】:

    标签: python linux python-3.x systemd


    【解决方案1】:

    看起来运行脚本需要某种权限,因为您可以在登录会话的情况下运行它。 你能提供输出的

    systemctl status <yourservicefilename>
    

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

    请参阅link了解所有详细信息。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2011-02-11
      相关资源
      最近更新 更多