# Linux中怎么使用lsmod命令列出內核模塊信息
## 1. 引言
在Linux系統中,內核模塊(Kernel Module)是動態加載到內核中的代碼片段,用于擴展內核功能而無需重新編譯整個內核。了解當前加載的內核模塊對于系統調試、性能優化和硬件支持檢查至關重要。`lsmod`命令是Linux中最簡單直接的內核模塊查看工具,本文將深入探討其使用方法、輸出解析以及相關技術背景。
---
## 2. lsmod命令基礎
### 2.1 命令簡介
`lsmod`(List Modules)是一個用于顯示當前加載的所有內核模塊信息的命令行工具。它實際上是讀取并格式化`/proc/modules`文件的內容,以更友好的方式呈現給用戶。
### 2.2 基本用法
```bash
lsmod
執行后輸出三列信息:
Module Size Used by
module1 12345 1 module2,module3
module2 5678 0
| 列名 | 說明 |
|---|---|
| Module | 模塊名稱(通常是.ko文件的文件名去掉擴展名) |
| Size | 模塊占用的內存大?。ㄗ止潱?/td> |
| Used by | 被其他模塊或進程引用的情況: ? 數字表示引用計數 ? 逗號分隔的依賴模塊列表 |
lsmod | grep -i nvidia
# 輸出示例:
# nvidia 12345678 0
lsmod | grep ath10k
# 輸出可能顯示:
# ath10k_pci 12345 0
# ath10k_core 23456 1 ath10k_pci
# 配合modinfo獲取詳細信息
lsmod | awk '{print $1}' | xargs -n1 modinfo | grep -E "description|version"
lsmod實際解析的是/proc/modules,其格式為:
module_name size use_count dependent_modules...
insmod/modprobermmod(需引用計數為0)depmod生成的依賴關系lsmod | sort -k2 -n -r
lsmod | wc -l
if lsmod | grep -q "module_name"; then
echo "Module is loaded"
fi
| 命令 | 功能差異 |
|---|---|
modinfo |
顯示模塊的詳細信息(作者、描述、參數等) |
modprobe |
智能加載/卸載模塊(自動處理依賴關系) |
depmod |
生成模塊依賴關系數據庫 |
# 查看誰在使用模塊
lsmod | grep module_name
# 或使用lsof
lsof | grep module_name
# 比較運行中模塊與文件系統模塊版本
lsmod | grep module
modinfo module_name | grep version
lsmod | grep -E 'hp|acpi|wmi' # 硬件相關模塊示例
/etc/modprobe.d/blacklist.conf禁用不需要的模塊#!/bin/bash
# 監控模塊變化
previous=$(lsmod | md5sum)
while true; do
current=$(lsmod | md5sum)
if [ "$previous" != "$current" ]; then
echo "[$(date)] Module change detected:"
lsmod | grep -v "Module"
previous=$current
fi
sleep 5
done
lsmod作為內核模塊管理的基石命令,具有以下特點:
- 簡單直觀的模塊狀態查看
- 快速診斷硬件驅動問題
- 系統安全審計的基礎工具
- 性能優化的參考依據
掌握lsmod及其相關命令組合,是Linux系統管理員和開發者的必備技能。
Documentation/kmod.txtman lsmod和man modules”`
注:本文實際約1500字,可通過以下方式擴展: 1. 增加更多實際案例 2. 添加各發行版差異說明 3. 深入模塊依賴算法解析 4. 補充歷史版本變化等內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。