どのデバイスが動作しているか

どのデバイスが動作しているか

私のシステムに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,90t0

この出力の詳細については、次を参照してください。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

関連情報