Linux系统怎么使用lsmod命令列出内核模块

发布时间:2022-02-02 18:07:44 作者:小新
来源:亿速云 阅读:246
# 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表示可安全卸载

四、实际应用场景

1. 检查驱动加载状态

lsmod | grep nvidia

可验证NVIDIA显卡驱动是否成功加载。

2. 排查模块冲突

当多个无线网卡驱动同时加载时:

ath9k                 147456  0
iwlwifi               282624  0

可能引发设备识别问题,此时需要卸载冲突模块。

3. 分析系统性能

通过Used by计数可识别高频调用模块,辅助性能优化:

xfs                  1597440  2
ext4                 737280  1

五、进阶使用技巧

1. 结合modinfo获取详情

lsmod | awk 'NR>1 {print $1}' | xargs -n1 modinfo | less

该管道命令可查看所有已加载模块的详细信息。

2. 监控模块动态变化

watch -n1 lsmod

实时监控模块加载/卸载情况(每秒刷新)。

3. 生成依赖树

lsmod | awk 'NR>1 {print $1}' | while read m; do 
    echo -n "$m: "; modinfo -F depends $m; 
done

显示各模块的依赖关系。

六、常见问题处理

1. 模块无法卸载

Used by计数不为0时:

sudo rmmod module_name

将提示”Module in use”。需先解除依赖:

sudo modprobe -r dependent_module

2. 输出信息异常

若出现异常大小的模块(如几个字节),可能是: - 内核符号表损坏 - 硬件故障导致内存读取错误 建议重启系统或检查硬件健康状况。

七、相关命令对比

命令 功能差异 适用场景
modprobe 智能加载模块(含依赖处理) 需要加载新模块时
insmod 直接加载指定模块文件 测试自定义模块
rmmod 卸载模块 移除不再需要的模块
dmesg 查看模块加载日志 调试加载失败问题

八、安全注意事项

  1. 模块验证:加载第三方模块前应检查签名
    
    modinfo -F sig_key module_name
    
  2. 生产环境限制:关键服务器建议禁用动态模块加载:
    
    echo "kernel.modules_disabled=1" >> /etc/sysctl.conf
    
  3. 资源监控:异常模块可能消耗大量内存:
    
    lsmod | sort -k2 -n -r | head -10
    

九、底层实现原理

lsmod通过读取/proc/modules伪文件工作,该文件数据结构包含: - 模块内存地址范围 - 符号导出表 - 引用计数器

内核通过struct module组织模块信息,lsmod的输出实际上是这些结构体的用户态可视化呈现。

十、总结建议

  1. 定期检查加载模块列表,移除不必要的模块
  2. 关键系统建议维护白名单:
    
    lsmod > /etc/approved_modules.list
    
  3. 开发驱动时使用lsmod验证加载状态
  4. 结合systemd-modules-load服务实现持久化加载

掌握lsmod命令是Linux系统管理的基础技能,配合其他模块工具能有效维护系统稳定性和安全性。 “`

注:本文实际约1050字,包含技术细节、实用示例和运维建议,采用标准的Markdown格式,支持代码高亮和表格呈现。可根据具体发行版调整命令示例。

推荐阅读:
  1. 使用linux的compgen命令列出所有Linux命令
  2. 使用linux的xlsclients命令列出应用程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux lsmod

上一篇:Linux系统中怎么输入emoji

下一篇:Linux pyDash怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》