/usr/lib/systemd/user/pulseaudio.service
我刚刚意识到包中提供了一个pulseaudio
。
它被禁用了,但pulseaudio
没有它也能正常工作。已经用了一年了。启动后不需要做任何事情来启动实际的可执行文件。毕竟它是 Ubuntu 附带的软件包。
为什么会这样?我应该启用该服务吗?如果是这样,为什么 Ubuntu 默认不这样做?此外,与当前操作相比会有什么变化?
提前致谢
PS:ubuntu wiki 页面没有提供任何信息。
答案1
在 PulseAudio 文档中,对在系统模式下运行 pulseaudio 的目的以及为什么它不是默认模式进行了广泛的讨论:https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/
缺点如下:https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/
你应该阅读文档中的整页,主要观点是
在系统范围模式下运行 PulseAudio 有一些限制:
- 所有有权访问声音服务器的用户都可以终止/修改所有其他连接客户端的所有接收器/源和流
- 缓存的声音样本只有一个命名空间,即同一时间只能有一个 Gnome 事件声音配置文件处于活动状态
它有一些缺点:
- 安全性更差,因为用户现在可以命令以另一个用户名运行的服务器应用程序。他甚至可以从该声音服务器加载/卸载模块
- 由 module-stream-restore 管理的存储音量级别等设置不再是针对每个用户的,而是针对整个系统的
这就是它默认不启用的原因。如果您意识到潜在的影响,使用它也不会有什么坏处。
如果启用它,您可以在没有登录用户的机器上获得声音(例如通过网络)。
答案2
文件内容如下:
[Unit]
Description=Sound Service
# We require pulseaudio.socket to be active before starting the daemon, because
# while it is possible to use the service without the socket, it is not clear
# why it would be desirable.
#
# A user installing pulseaudio and doing `systemctl --user start pulseaudio`
# will not get the socket started, which might be confusing and problematic if
# the server is to be restarted later on, as the client autospawn feature
# might kick in. Also, a start of the socket unit will fail, adding to the
# confusion.
#
# After=pulseaudio.socket is not needed, as it is already implicit in the
# socket-service relationship, see systemd.socket(5).
Requires=pulseaudio.socket
ConditionUser=!root
[Service]
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
# Note that notify will only work if --daemonize=no
Type=notify
UMask=0077
[Install]
Also=pulseaudio.socket
WantedBy=default.target
似乎是一个自动启动服务,用于运行 PulseAudio,而不是像它所说的那样运行systemctl --user start pulseaudio
。
如果我错了请纠正我!