Linuxのinsmodで使用されたファイルを確認するにはどうすればよいですか?


3

さまざまな種類のCentOS / Redhatサーバーで実行するスクリプトを作成していますが、そこではどのファイルがカーネルにロードされているかを調べる必要があります。lsmodを実行すると、モジュールの名前(insmodの呼び出しで-oを使用して設定される場合があります)が提供されますが、ロードされたファイルは提供されません。

とにかく、どのファイルがモジュールとしてカーネルにロードされたかを調べる方法はありますか?できれば、lsmodに表示される名前と相互参照する機能がありますか?

ありがとう!

回答:


2

私の知る限り、この情報はどこにも記録されません。それがあったとしても、その間にファイルが移動または削除された場合、情報は正確ではない可能性があります(だれもそのような機能を実装していない理由を説明します)。

モジュール名が与えられfoomodprobe -l fooモジュールがあれば、ファイルが現在ロードされるものを示してfoo要求されました。ただしmodprobe -o bar、モジュールのロードに使用された場合、デフォルトのモジュール名は記録されず、のみが記録されbarます。


私はWindowsのバックグラウンドから来ています-そのようなファイルは通常識別しやすく、通常はアクセスのためにロックされています(移動、名前変更など)。カーネルは、ロードしたファイルのファイル記述子を(ロード後に)保持しますか?または、デフォルトで、どのファイルがどの名前でロードされたかを記録しますか?
ヨン

@Yon:カーネル自体がファイルを開くことはありません。insmod以下とmodprobeからコードをロードすることにより、作業.koメモリにファイルとカーネルにそのメモリ内のコピーを渡します。その後、カーネルは独自のコードのコピーを保持します。この情報が必要な場合は、独自のログを保持する必要があります(また、カーネルファイルのアップグレードなどによってモジュールファイルを削除したり移動したりしないでください)。これは、Unixの世界における一般的な哲学であることに注意してください。ファイルの名前変更または削除は常に機能し、後でファイルを開こうとしない限り問題を引き起こすことはありません。
ジル

これありがとう。別の解決策が見つかります。このサイトの規則に従って、それは本当の答えだ場合(質問に良い答えであると考えられ、「それができないのです」と言う答えは?
ヨン

@Yon:私は興味のあるパーティーなので、これにはほとんど答えられません。チェックよくある質問受け入れの回答については、あなたはまだ、決め上で見ることができない場合は、メタおよびSOメタまたはに尋ねるメタ
ジル

よくある質問によると、それは「最も役立つ」答えになるはずです。
ヨン

0

私は少し遊んでいて、次のコマンドを見つけました。

$ lsmod | cut -d " " -f 1

ロードされたモジュールのリストを出力します。

$ modinfo modulename -n

モジュールのファイル名を出力します。

$ list=`lsmod | cut -d " " -f 1`; echo "$list" | while read line; do echo $line; echo -e `modinfo $line -n`\\n; done;

カーネルモジュールのリストとそのファイルパスを出力します。


1
ただしmodinfo、モジュールが別名でロードされたmodprobe -o場合、またはモジュールファイルの名前が変更された場合は役に立ちません。
ジル

@Gilles True、+ 1
BloodPhilia

@Gillesそれがまさにここの状況です。したがって、@ BloodPhiliaが示唆したことをテストした後、私たちはまだ答えがありません。
ヨン

0
cat /proc/modules

ロードされたモジュールのリスト(詳細)を提供します(RedHat、Ubuntu、RedhatのベースとなっているCentOSで機能すると思います)。


@ ring0:実際には、ロードされた名前で分類されたモジュールを見つける簡単な方法です。ただし、の使用により、ロード名がファイル名と一致しない場合は役に立ちませんmodprobe -o
ジル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.