ファイルからPCIデバイス情報を読み取る必要があります。ただし、このようなコマンドを使用すると、使用できない出力が表示されます。
cat /proc/bus/pci/05/00.0
出力:
�h��
この問題をどのように解決できますか?
オペレーティングシステム:DebianファミリーLinux x64、Kenel 4.19
答え1
/proc/ 以下のすべてのファイルにテキストが含まれているわけではありません。
/proc/bus/pci/05/00.0
(および同様のファイル)には、テキストではなくバイナリデータが含まれています。端末に表示するためではなく、バイナリデータ型を理解するプログラム(少なくともカーネル文書やソースコードのどこかに文書化されている)から読み取れるようになっています。
内部コンテンツを表示するにはhexdump
akaを使用できますhd
。
$ hd /proc/bus/pci/05/00.0
00000000 00 10 72 00 07 04 10 00 03 00 07 01 10 00 00 00 |..r.............|
00000010 01 c0 00 00 04 00 6c d2 00 00 00 00 04 00 28 d2 |......l.......(.|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 10 40 30 |..............@0|
00000030 00 00 40 fe 50 00 00 00 00 00 00 00 0a 01 00 00 |[email protected]...........|
00000040
05:00.0に他のPCI-eデバイスがあることはほぼ確実であるため、出力が異なる場合があります。
答え2
PCIベンダー/デバイス識別子を見つけるには、/sys/bus/pci/...
ディレクトリツリーを使用できます。
for i in /sys/bus/pci/devices/*
do
printf "Device ${i##*/}: vendor %s, device %s\n" "$(< $i/vendor)" "$(< $i/device)"
done
私の考えでは、/sys
ディレクトリ階層は、/proc
解析が難しい形式の任意のギター(プロセスに関連しない)システム情報で/sys
乱雑になりました。 。分析が簡単です。
/sys
したがって、訪問する前に、必要な情報が「first」項目にあることを確認しておくとよいでしょう/proc
。