質問

現在の /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/*;

されるようになるとするビットの高速化としても使用 cutawk.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top