您好,登录后才能下订单哦!
# 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 | 模块占用的内存大小(字节) |
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格式,支持代码高亮和表格呈现。可根据具体发行版调整命令示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。