如何在 Linux 中找出哪些程序在使用声音?

Geo*_*Geo 19 audio linux alsa

有没有知道什么二进制文件正在使用声音系统/服务器?喜欢在/proc目录(或/dev)中看到一些东西?

一段时间后 ALSA 停止工作,我想知道为什么。

Bur*_*Ali 15

以下命令之一可能会为您提供所需的内容:

burhan@Ganymede:~$ lsof /dev/snd/*
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
pulseaudi 1142 burhan  mem    CHR  116,3          7885 /dev/snd/pcmC0D0p
pulseaudi 1142 burhan   21u   CHR  116,5      0t0 7887 /dev/snd/controlC0
pulseaudi 1142 burhan   28u   CHR  116,5      0t0 7887 /dev/snd/controlC0
pulseaudi 1142 burhan   36r   CHR 116,33      0t0 6351 /dev/snd/timer
pulseaudi 1142 burhan   37u   CHR  116,3      0t0 7885 /dev/snd/pcmC0D0p


burhan@Ganymede:~$ fuser -v /dev/snd/*
                     USER PID ACCESS COMMAND
/dev/snd/controlC0:  burhan     1142 F.... pulseaudio
/dev/snd/pcmC0D0p:   burhan     1142 F...m pulseaudio
/dev/snd/timer:      burhan     1142 f.... pulseaudio
Run Code Online (Sandbox Code Playgroud)

在这个系统上,pulseaudio 是唯一使用声音设备的东西,但这是一个全新的 Ubuntu 11.04 VM。您可能还列出了其他内容。

  • 多年来我一直错误地使用 lsof 。嗯。感谢这篇文章。 (2认同)

小智 6

我不确定/proc 中的声音接口,但如果您正在运行PulseAudio,您可以从基于 GTK 的工具PulseAudio Volume Control获取此信息。在 Ubuntu 上,它是从pavucontrol包安装的。

它让您可以查看使用声音流的所有应用程序,并让您单独控制每个流的音量级别(除了通道本身的音量)。

替代文字


小智 6

如果您的 Linux 安装使用 PulseAudio,那么可以

列出连接到您的脉冲音频的所有进程

运行这个命令pactl list clients


但是,如果您确实想要的话,它将为您提供可能的发声过程:

捕获发出声音的进程,然后运行以下命令:

watch -n0.5 'pacmd list-sink-inputs | tee -a sound-inputs.log'

一段时间后,您将看到哪些进程正在发出声音,它们可能会很快消失,这就是tee -a sound-inputs.log命令存储/记录sound-inputs.log所有信息的原因,并且您可以查看现在到底是哪个进程正在发出噪音

您可以通过命令查看它less sound-inputs,示例输出如下:

0 sink input(s) available.
0 sink input(s) available.
0 sink input(s) available.
1 sink input(s) available.
    index: 277
    driver: <protocol-native.c>
    flags: START_CORKED 
    state: RUNNING
    sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
    volume: front-left: 55420 /  85% / -4.37 dB,   front-right: 55420 /  85% / -4.37 dB
            balance 0.00
    muted: no
    current latency: 35.85 ms
    requested latency: 7.52 ms
    sample spec: float32le 2ch 44100Hz
    channel map: front-left,front-right
                 Stereo
    resample method: copy
    module: 10
    client: 1884 <Chromium>
    properties:
        application.icon_name = "chromium-browser"
        media.name = "Playback"
        application.name = "Chromium"
        native-protocol.peer = "UNIX socket client"
        native-protocol.version = "33"
        application.process.id = "2993986"
        application.process.user = "aneutrino"
        application.process.host = "xiexie"
        application.process.binary = "Discord"
        application.language = "en_US.UTF-8"
        window.x11.display = ":0"
        application.process.machine_id = "13335995d81e4f4faf75ac28835b4f8c"
        module-stream-restore.id = "sink-input-by-application-name:Chromium"
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,它是使用发出声音的Discord聊天应用程序,我已输入设置并禁用其中的声音,但我也可以简单地杀死它chrome-browserPID 2993986kill 2993986