私のシステムにdvb-t
来てカードがありますdvb-s
。
/dev/dvb/adapter0
そして
/dev/dvb/adapter1
現在どのカードを使用しているかを知る方法はありますか?どちらではないか?
答え1
lsof
を使用すると、どのプロセスがファイルを使用しているかを確認できます。あなたの場合:
$ lsof /dev/dvb/adapter0
$ lsof /dev/dvb/adapter1
各呼び出しは、デバイスからハンドラ(ファイル記述子)を要求するプロセスのリストを提供します。何も印刷されない場合は、デバイスが現在使用されていないと結論付けることができます。以下は、/dev/urandom
私のシステムで使用されるConky、Chromium、およびThunderbirdの例です。
$ lsof /dev/urandom
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
conky ---- ---- 3r CHR 1,9 0t0 1034 /dev/urandom
chromium- ---- ---- 55r CHR 1,9 0t0 1034 /dev/urandom
thunderbi ---- ---- 24r CHR 1,9 0t0 1034 /dev/urandom
r
(FD フィールドで) は、プロセスが読み取りアクセスを要求したことを意味します。前の数字は記述子番号です。デバイスの種類と州/マイナー番号CHR
。はこの記述子の現在のファイルオフセットで、1034は(私のシステムにある)デバイスファイルのinode番号です。1,9
0t0
この出力の詳細については、次を参照してください。lsof(8)
。ところでlsof
、プロセスはファイルが見つかったかどうかによって異なるステータスコードを返します。これは、シェルスクリプトで非常に簡単に使用できることを意味します。
#!/bin/bash
if lsof /dev/dvb/adapter0 > /dev/null 2>&1; then
echo "Adapter 0 is in use."
elif lsof /dev/dvb/adapter1 > /dev/null 2>&1; then
echo "Adapter 1 is in use."
else
echo "No adapter is in use."
fi