我有一台使用管道线的AlmaLinux 9主机。以 root 身份登录我可以毫无问题地播放音频文件。但与任何其他用户发出相同的命令会导致“主机已关闭”错误,并且不会播放音频;例如:
pw-play -v /data/sounds/intercom-bong.wav
error: pw_context_connect() failed: Host is down
另外,如果作为根用户我跑
sudo /usr/bin/pw-play -v /data/sounds/intercom-bong.wav
error: pw_context_connect() failed: Host is down
我得到完全相同的错误。我不明白这是怎么可能的,因为 sudo 意味着以 root 身份运行它。
关于如何解决这个问题的想法?
答案1
我不知道 RHEL 或 Alma Linux 是如何做到这一点的,但在 Debian 上,创建的音频设备由udev
拥有root
,属于audio
具有 660 权限的组。
在我的系统上,看起来像这样:
$ ls -lF /dev/snd/
total 0
drwxr-xr-x 2 root root 100 Jul 30 20:51 by-path/
crw-rw----+ 1 root audio 116, 13 Aug 1 21:25 controlC0
crw-rw----+ 1 root audio 116, 12 Aug 1 21:25 controlC1
crw-rw----+ 1 root audio 116, 18 Aug 1 21:25 controlC2
crw-rw----+ 1 root audio 116, 11 Aug 1 21:25 hwC0D0
crw-rw----+ 1 root audio 116, 8 Aug 1 21:25 hwC1D0
crw-rw----+ 1 root audio 116, 17 Aug 1 21:25 hwC2D0
crw-rw----+ 1 root audio 116, 4 Aug 6 19:26 pcmC0D3p
crw-rw----+ 1 root audio 116, 5 Aug 6 19:26 pcmC0D7p
crw-rw----+ 1 root audio 116, 9 Aug 6 19:26 pcmC0D8p
crw-rw----+ 1 root audio 116, 10 Aug 6 19:26 pcmC0D9p
crw-rw----+ 1 root audio 116, 2 Aug 6 19:26 pcmC1D3p
crw-rw----+ 1 root audio 116, 3 Aug 6 19:26 pcmC1D7p
crw-rw----+ 1 root audio 116, 6 Aug 6 19:26 pcmC1D8p
crw-rw----+ 1 root audio 116, 7 Aug 6 19:26 pcmC1D9p
crw-rw----+ 1 root audio 116, 15 Aug 6 19:26 pcmC2D0c
crw-rw----+ 1 root audio 116, 14 Aug 10 09:34 pcmC2D0p
crw-rw----+ 1 root audio 116, 16 Aug 6 19:26 pcmC2D1p
crw-rw----+ 1 root audio 116, 1 Jul 30 20:51 seq
crw-rw----+ 1 root audio 116, 33 Aug 1 21:25 timer
你应该:
检查您的系统以找出 /dev/snd 设备节点的组和权限(可能是
audio
和660
,与 debian 上的相同),确保应该有权访问音频设备的用户位于该组中。 (对组成员身份的更改将需要使用
newgrp
或注销并在将当前登录的用户添加到该组后再次登录)确保 pipelinewire 实际上正在为用户运行。例如,在我的一台运行 pipelinewire 的机器上:
$ ps u -C pipewire
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
username 6914 0.0 0.0 105708 8836 ? S<sl Jul30 0:00 /usr/bin/pipewire
username 6915 0.0 0.0 94680 4948 ? Ssl Jul30 0:00 /usr/bin/pipewire -c filter-chain.conf
pipewire
应该在用户登录时自动启动。如果它没有运行,请检查用户的~/.xsession-errors
文件 - 如果它启动然后死掉,那里可能有线索。
如果它根本没有启动,请检查该用户的窗口管理器的会话启动配置。如果您使用 xfce,那将位于Settings Manager -> Settings and Startup -> Application Autostart
.如果您正在使用 gnome 或其他一些 WM,我不知道 - 自从我使用 gnome 以来已经有 10 多年了……但它可能会是类似名称的东西。