在我的ubuntu 18.10上,我有一个守护程序正在通过systemd在系统启动时启动,它通过串行和USB访问很多传感器。
在某些情况下,它需要通过默认的音频接收器播放一些声音,但是只要尝试运行,守护程序就会退出。
systemctl状态显示以下消息:
PulseAudioService: pa_context_connect() failed
Assertion 'c' failed at pulse/context.c:1062, function pa_context_get_state(). Aborting.
如果我从命令行启动守护程序,则声音播放不会有任何问题,但是,如果通过systemctl start(或重新启动)启动了守护程序,则应在播放声音时崩溃。
这使我相信问题在于.service文件中的某些资源设置,但是我无法找到解决问题的设置。
我的.service文件:
[Unit]
Description=Vejrstation server
After=mysql.service
[Install]
WantedBy=default.target
[Service]
type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/vejrstationd
Restart=on-failure
DeviceAllow=char-alsa rw
DeviceAllow=char-ttyACM rw
DeviceAllow=char-ttyUSB rw
DeviceAllow=char-ttyS rw
有什么想法吗?
经过大量研究,我得出的结论是,这个问题可能不是编程问题,而是systemd或Pulseaudio的配置问题,因此这可能不是正确的论坛。