現在、/usr/sbin/alsa
Debian でサウンド カードを使用するプロセスを認識する方法は次のようになります。
echo $( \
lsof +D /dev -F rt \
| awk '/^p/ {pid=$1} /^t/ {type=$1} /^r0x(74|e)..$/ && type == "tCHR" {print pid}' \
| cut -c 2- \
| uniq \
)
これはかなり醜く、に依存しlsof
ます。lsof
おそらく/procを使用して、を使用しないPOSIXソリューションを探しています。
time for i in /proc/*/fd/*; do readlink $i | grep -q /dev/snd/pcm && echo $i | awk -F '/' '{print $3}'; done | uniq
lsof
残念ながら、上記のベース スニペットの 2 倍の時間がかかるようです。実行可能な代替品にするために、高速化できますか?
更新上記を次のように書き直しました。
#!/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
しかし、以前のスニペットと同じパフォーマンスを持っているようです。grep が原因だと思います。
更新:このトピックに関するDebian バグをオープンしました。