首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PulseAudio未能在CentOS 7中以系统模式启动

PulseAudio未能在CentOS 7中以系统模式启动
EN

Unix & Linux用户
提问于 2018-11-06 21:01:15
回答 2查看 2.2K关注 0票数 1

长话短说,我正在尝试设置PulseAudio作为本地音乐流的回送接口。但是,我在设置它的过程中碰到了一个临界点。

据我所知,如果不运行X服务器,就不能在“非系统模式”下启动脉冲音频,但是如果服务器是无头的,这不是一种选择。因此,我开始编写一个拼凑在一起的systemd脚本,将守护进程作为一个系统范围的实例启动。然而,由于一些令人费解的原因,这一做法失败了。

如果我在systemd脚本中运行命令,系统范围内的脉冲就会很好地启动!但是,如果我从启动脚本中运行它(例如。使用systemctl启动脉冲音频),它在Failed to create '/var/run/pulse': Permission denied中失败。在我的一生中,我无法弄清楚它将如何以不同的方式为同一个用户工作。我还尝试用ls /var/run/pulse替换start脚本。当脚本设置为“脉冲”运行时,它将在日志中不打印任何内容。但是,如果我将整个调用包装在一个sudo -u pulse中,它会打印/var/run/pulse的内容。当我将脉冲启动命令包装在sudo -u root中时,它只会以相同的错误崩溃。

代码语言:javascript
复制
[root@ian-primary ian]# ls -al /var/run/pulse
total 4
drwx------.  3 pulse pulse  80 Nov  5 23:10 .
drwxr-xr-x. 29 root  root  840 Nov  5 23:03 ..
drwxr-xr-x.  3 pulse pulse  60 Nov  5 23:04 .config
-rw-------.  1 pulse pulse  16 Nov  5 23:04 .esd_auth

[root@ian-primary ian]# sudo -u pulse ls -al /var/run/pulse
total 4
drwx------.  3 pulse pulse  80 Nov  5 23:10 .
drwxr-xr-x. 29 root  root  840 Nov  5 23:03 ..
drwxr-xr-x.  3 pulse pulse  60 Nov  5 23:04 .config
-rw-------.  1 pulse pulse  16 Nov  5 23:04 .esd_auth

Nov 06 13:56:02 ian-primary systemd[1]: Starting PulseAudio system server...
Nov 06 13:56:02 ian-primary pulseaudio[23251]: W: [pulseaudio] main.c: Running in system mode, but --disallow-exit not set.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Timer slack is set to 50 us.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: setpriority() worked.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Successfully gained nice level -11.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Found user 'pulse' (UID 171) and group 'pulse' (GID 171).
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Home directory of user 'pulse' is not '/var/run/pulse', ignoring.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: E: [pulseaudio] main.c: Daemon startup failed.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Failed to create '/var/run/pulse': Permission denied
Nov 06 13:56:02 ian-primary systemd[1]: pulseaudio.service: main process exited, code=exited, status=1/FAILURE
Nov 06 13:56:02 ian-primary systemd[1]: Failed to start PulseAudio system server.
Nov 06 13:56:02 ian-primary systemd[1]: Unit pulseaudio.service entered failed state.
Nov 06 13:56:02 ian-primary systemd[1]: pulseaudio.service failed.

[root@ian-primary ian]# /bin/pulseaudio -vvv --daemonize --system --realtime
W: [pulseaudio] main.c: Running in system mode, but --disallow-exit not set.
W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set.
N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode.
N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.
I: [pulseaudio] main.c: Daemon startup successful.

[root@ian-primary ian]# cat /etc/systemd/system/pulseaudio.service
[Unit]
Description=PulseAudio system server

[Service]
Type=notify
Environment=PULSE_RUNTIME_PATH=/run/pulse

# ExecStart=/bin/printenv
# export PULSE_RUNTIME_PATH="/run/pulse"
ExecStart=/bin/pulseaudio -vvv --daemonize --system --realtime

[Install]
WantedBy=multi-user.target
EN

回答 2

Unix & Linux用户

发布于 2018-11-07 00:57:30

这并不能真正解释Failed to create '/var/run/pulse': Permission denied消息,但是您的配置中有一个明显的问题,就是您正在使用systemd服务单元运行带有--daemonize的PulseAudio,而systemd实际上希望它在前台运行。您应该将其更改为--daemonize=no

您还可能希望按照日志消息中的建议显式列出--disallow-exit--disallow-module-loading

PulseAudio还抱怨用户pulse的S主目录不是/var/run/pulse,因为它似乎预期,您可能希望更新系统帐户以反映这一点。

为了进行进一步的研究,您可能需要查看这篇文章,以获得更多关于运行系统范围内的PulseAudio实例的详细信息和说明,以及PulseAudio wiki中的此页 (包括一些关于为什么不希望将PulseAudio作为系统范围的服务运行的参考)。

票数 1
EN

Unix & Linux用户

发布于 2019-01-30 22:25:50

您可以尝试将pulseaudio.service与--user放在一个shell脚本中来启动它。现在,以普通用户的身份在屏幕中运行启动脚本。然后断开屏幕并注销。脉冲音频服务器继续进行,就好像它是无头的。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/480227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档