質問
現在の /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
.いPOSIXソリューション lsof
, かを/proc.
time for i in /proc/*/fd/*; do readlink $i | grep -q /dev/snd/pcm && echo $i | awk -F '/' '{print $3}'; done | uniq
残念なことにも思い通りの倍の lsof
ベスニペットです。ですので、せることで、これを持続可能な交換用?
更新 無事に卒業できた私は、しばらく、上記のとして
#!/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バグ 成長を続けていきます。
解決
始め多くのプロセスです。くまさんと同様にlsofスクリプトで掲載して...が置換lsofによるシェルのためのループ:
いようにしたい場合の起動のgrepプロセス開始。
#!/bin/sh
for i in /proc/[0-9]*/fd/*
do
echo ${i%/fd/*} $(readlink $i)
done | grep -q /dev/snd/pcm
この間、今4.5s"自分のデスクトップに比べ7.5秒の時はあまりgrepプロセスの各オファイルです。
が---おgrepが必要になると思います。ければな試すことができます:
#!/bin/sh
for i in /proc/[0-9]*/fd/*
do
var="$(readlink $i)"
if test x"$var" != x"${var#/dev/snd/pcm}"
then
echo $i
fi
done
こちらの方がはるかに早まるのもったいなかったtest
はほとんどのシェルが組み込みが思うことができるように、検査方法を用いています。います。
他のヒント
あの質問の回答についての質問に ALSAのFAQ.自分のシステムを用い、フューザーはよりも高速lsof.
fuser -v /dev/snd/*
いわからないとも言えないどのような時間までのお代替提案
for i in /proc/[0-9]*/fd/*;
されるようになるとするビットの高速化としても使用 cut
よ awk
.
所属していません StackOverflow