2016-07-26 102 views
1

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

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

multiupload @。服务文件:

[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服务,称为不输出音频从终端中执行时,所有这些工作的很好。

我可以从我的python脚本输出任何方式,由systemd服务调用?或者这是不可能的(系统服务不应该以这种方式与用户会话交互?)?

也许Mopidy会的工作,但我想用尽可能少的部件尽可能...

感谢所有的想法!

回答

0

看起来像运行脚本需要某种权限,因为您可以在登录会话中运行它。 能否请您提供的

systemctl status <yourservicefilename> 

输出,您也可以尝试在你的服务文件中设置User=root和提供服务文件WorkingDirectory

请参阅link的所有细节。