How can I find out what programs are using sound in Linux?
Is there anyway of knowing what binaries are using the sound system/server ?
Like seeing something in the /proc
directory (or /dev
) ?
After a while ALSA stops working , and I would like to know why.
Solution 1:
One of the following commands might give you what you are after:
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
On this system, pulseaudio is the only thing making use of the sound device but this is a fresh Ubuntu 11.04 VM. You may have other things listed.
Solution 2:
I'm not sure about the sound interfaces in /proc, but if you have PulseAudio running, you can get this information from the PulseAudio Volume Control, a GTK based tool. On Ubuntu, it is installed from the pavucontrol package.
It lets you see all the applications using the sound streams, and lets you control the volume levels for each stream individually (in addition to the volume of the channel itself).
Solution 3:
Run 'lsof | grep dev/snd
' as root. You'll see what processes have files in /dev/snd open.
Solution 4:
If your Linux installation is using PulseAudio, then it is possible to
List all processes which are connected to your pulse audio
run this command pactl list clients
However, it will give you POSSIBLE sound-making processes, if you really want to:
catch the process making sound then run this command:
watch -n0.5 'pacmd list-sink-inputs | tee -a sound-inputs.log'
and after a while you will see what processes are making sound, they could disappear fast, this is why tee -a sound-inputs.log
command is storing/logging in sound-inputs.log
all information, and you can review which process exactly is making noise now.
you can review it by less sound-inputs
command, an example output is below:
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"
in the example, above it was Discord
chat application using chrome-browser
making noises PID 2993986
I have entered to settings and disabled sounds in it, but alternatively I could simply kill it kill 2993986