वर्तमान में जिस तरह से डेबियन में /usr/sbin/alsa
साउंड कार्ड का उपयोग कर प्रक्रियाओं को जानता है का उपयोग कर प्रक्रियाओं लगता है:ढूँढना ALSA ध्वनि तेज
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
के बिना एक POSIX समाधान की तलाश में हूं, शायद/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 bug खोला है।
/proc POSIX का हिस्सा नहीं है, जहां तक मुझे पता है। –
जब मैं पॉज़िक्स कहता हूं, मेरा मतलब है कि शेल कोड उदाहरण के लिए डैश जैसे किसी भी खोल पर चलाने में सक्षम होना चाहिए। – hendry
/बिन/पॉश - मेरा मतलब है:} – hendry