Attualmente il modo /usr/sbin/alsa
in Debian conosce i processi che utilizzano la scheda audio si presenta come:Trovare processi che utilizzano ALSA suono veloce
echo $(\
lsof +D /dev -F rt \
| awk '/^p/ {pid=$1} /^t/ {type=$1} /^r0x(74|e)..$/ && type == "tCHR" {print pid}' \
| cut -c 2- \
| uniq \
)
che è piuttosto brutto e dipende lsof
. Sto cercando una soluzione POSIX senza lsof
, forse usando/proc.
time for i in /proc/*/fd/*; do readlink $i | grep -q /dev/snd/pcm && echo $i | awk -F '/' '{print $3}'; done | uniq
purtroppo sembra prendere il doppio del tempo come il frammento di base lsof
sopra. Puoi renderlo più veloce, al fine di renderlo un sostituto valido?
Aggiornamento ho riscritto quanto sopra come:
#!/bin/sh
for i in /proc/[0-9]*/fd/*
do
if readlink $i | grep -q /dev/snd/pcm
then
IFS=/; set -- $i; unset IFS; echo $3
fi
done
Ma sembra avere le stesse prestazioni di mio precedente snippet. Sospetto che Grep sia il colpevole.
Aggiornamento: ho aperto un Debian bug sull'argomento.
/proc non fa parte di POSIX, per quanto ne so. –
Quando dico POSIX, voglio dire che il codice della shell dovrebbe essere in grado di funzionare su qualsiasi shell come dash per esempio. – hendry
/bin/posh: è ciò che intendevo:} – hendry