# Linux系統怎么使用lsmod命令列出內核模塊
## 一、lsmod命令概述
`lsmod`是Linux系統中用于顯示當前已加載內核模塊的實用命令。作為系統管理員和開發人員常用的工具,它能夠快速展示模塊間的依賴關系及占用內存情況。
內核模塊(Kernel Module)是Linux內核的擴展組件,允許在運行時動態加載和卸載功能,避免了重新編譯內核的需要。`lsmod`命令直接讀取`/proc/modules`虛擬文件系統來獲取信息,因此執行時無需特殊權限。
## 二、基本命令語法
```bash
lsmod [選項]
雖然大多數情況下直接使用無參數形式即可,但部分發行版可能支持以下選項:
- -h
顯示幫助信息
- -V
顯示版本信息
典型輸出示例:
Module Size Used by
nls_utf8 16384 1
xt_conntrack 16384 1
...
字段名 | 說明 |
---|---|
Module | 模塊名稱(通常與.ko文件名對應) |
Size | 模塊占用的內存大?。ㄗ止潱?/td> |
Used by | 被其他模塊或進程引用的情況,數字表示引用計數,0表示可安全卸載 |
lsmod | grep nvidia
可驗證NVIDIA顯卡驅動是否成功加載。
當多個無線網卡驅動同時加載時:
ath9k 147456 0
iwlwifi 282624 0
可能引發設備識別問題,此時需要卸載沖突模塊。
通過Used by
計數可識別高頻調用模塊,輔助性能優化:
xfs 1597440 2
ext4 737280 1
lsmod | awk 'NR>1 {print $1}' | xargs -n1 modinfo | less
該管道命令可查看所有已加載模塊的詳細信息。
watch -n1 lsmod
實時監控模塊加載/卸載情況(每秒刷新)。
lsmod | awk 'NR>1 {print $1}' | while read m; do
echo -n "$m: "; modinfo -F depends $m;
done
顯示各模塊的依賴關系。
當Used by
計數不為0時:
sudo rmmod module_name
將提示”Module in use”。需先解除依賴:
sudo modprobe -r dependent_module
若出現異常大小的模塊(如幾個字節),可能是: - 內核符號表損壞 - 硬件故障導致內存讀取錯誤 建議重啟系統或檢查硬件健康狀況。
命令 | 功能差異 | 適用場景 |
---|---|---|
modprobe |
智能加載模塊(含依賴處理) | 需要加載新模塊時 |
insmod |
直接加載指定模塊文件 | 測試自定義模塊 |
rmmod |
卸載模塊 | 移除不再需要的模塊 |
dmesg |
查看模塊加載日志 | 調試加載失敗問題 |
modinfo -F sig_key module_name
echo "kernel.modules_disabled=1" >> /etc/sysctl.conf
lsmod | sort -k2 -n -r | head -10
lsmod
通過讀取/proc/modules
偽文件工作,該文件數據結構包含:
- 模塊內存地址范圍
- 符號導出表
- 引用計數器
內核通過struct module
組織模塊信息,lsmod
的輸出實際上是這些結構體的用戶態可視化呈現。
lsmod > /etc/approved_modules.list
lsmod
驗證加載狀態systemd-modules-load
服務實現持久化加載掌握lsmod
命令是Linux系統管理的基礎技能,配合其他模塊工具能有效維護系統穩定性和安全性。
“`
注:本文實際約1050字,包含技術細節、實用示例和運維建議,采用標準的Markdown格式,支持代碼高亮和表格呈現??筛鶕唧w發行版調整命令示例。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。