原文:http://watchmen.xin/2018/07/13/IT%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84-Linux%E8%BF%90%E7%BB%B4%E6%96%B9%E5%90%91/Linux%E5%91%BD%E4%BB%A4/%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4-lsmod+rmmod+modinfo+modprobe/

lsmod-查看内核模块信息

lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。

Linux操作系统的核心具有模块化的特性,应此在编译核心时,可以不用把全部的功能都放入核心,而是将这些功能编译成一个个单独的模块,待需要时再分别载入使用。

命令的输出如下:

1
2
3
4
5
6
7
[root@lvs001 modprobe.d]# lsmod 
Module Size Used by
iptable_nat 5923 0
nf_nat 22676 1 iptable_nat
nf_conntrack_ipv4 9186 3 iptable_nat,nf_nat
nf_conntrack 79537 3 iptable_nat,nf_nat,nf_conntrack_ipv4
nf_defrag_ipv4 1483 1 nf_conntrack_ipv4
1
2
3
4
5
[root@lvs001 modprobe.d]# lsmod | grep ip_vs
ip_vs_rr 1420 0
ip_vs 126705 2 ip_vs_rr
libcrc32c 1246 1 ip_vs
ipv6 336368 913 ip_vs,ib_ipoib,ib_addr

说明:

  • 第1列:表示模块的名称。
  • 第2列:表示模块的大小。
  • 第3列:表示该模块调用其他模块的个数
  • 第4列:显示该模块被其他什么模块调用

通常在使用lsmod命令时,都会采用类似lsmod | grep -i ipvs这样的命令来查询当前系统是否加载了某些模块。

modinfo-查看内核模块信息

modinfo会显示kernel模块的对象文件,以显示该模块的相关信息。

modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。

modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。

1
2
3
4
5
6
参  数:
-a或--author  显示模块开发人员。
-d或--description  显示模块的说明。
-h或--help  显示modinfo的参数使用方法。
-p或--parameters  显示模块所支持的参数。
-V或--version  显示版本信息。
1
2
3
4
5
6
7
[root@lvs001 modprobe.d]# modinfo ip_vs
filename: /lib/modules/2.6.32-696.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko
license: GPL
srcversion: 0FB85919D62C4255E412E5C
depends: ipv6,libcrc32c
vermagic: 2.6.32-696.el6.x86_64 SMP mod_unload modversions
parm: conn_tab_bits:Set connections' hash size (int)

注意,使用lsmod不能看到内核的相关参数配置,而使用modinfo命令则可以显示

rmmod-卸载内核模块

rmmod命令 用于从当前运行的内核中移除指定的内核模块。

执行rmmod指令,可删除不需要的模块。

1
2
3
4
5
选项信息:
-v:显示指令执行的详细信息;
-f:强制移除模块,使用此选项比较危险;
-w:等待着,直到模块能够被除时在移除模块;
-s:向系统日志(syslog)发送错误信息。
1
2
[root@lvs001 modprobe.d]# rmmod ip_vs
ERROR: Module ip_vs is in use by ip_vs_rr

使用rmmod卸载模块的时候,提示信息会比使用modprobe -r 的输出更详细,此时会显示该模块的被调用情况

insmod-载入内核模块

insmod(install module)命令用于载入模块。

Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。

语法:

1
insmod [-fkmpsvxX][-o <模块名称>][模块文件][符号名称 = 符号值]
1
2
3
4
5
6
7
8
9
10
11
参数说明:

-f  不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
-k  将模块设置为自动卸除。
-m  输出模块的载入信息。
-o<模块名称>  指定模块的名称,可使用模块文件的文件名。
-p  测试模块是否能正确地载入kernel。
-s  将所有信息记录在系统记录文件中。
-v  执行时显示详细的信息。
-x  不要汇出模块的外部符号。
-X  汇出模块所有的外部符号,此为预设置。

在Linux中,modprobe和insmod都可以用来加载module,不过现在一般都推荐使用modprobe而不是insmod了。
modprobe和insmod的区别是什么呢?

  • modprobe可以解决load module时的依赖关系,比如load moudleA就必须先load mouduleB之类的,它是通过/lib/modules//modules.dep文件来查找依赖关系的。而insmod不能解决依赖问题。
  • modprobe默认会去/lib/modules/目录下面查找module,而insmod只在给它的参数中去找module(默认在当前目录找)。

但是insmod也有它的有用之处,举个例子吧。

有/root/my-mod.ko这个module,cd /root/,然后用insmod my-mod.ko(insmod /root/my-mod.ko)就可以insert这个module了,

但是用modprobe my-mod.ko(modprobe /root/my-mod.ko)却提示”FATAL: Module my-mod.ko not found”,这就是因为modprobe是到/lib/modules/uname -r/下去找module的,如果没找到就是这样了。

depmod-分析模块依赖性

modprobe-内核模块操作

modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。

modprobe可载入指定的个别模块,或是载入一组相依的模块。

modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

1
2
3
4
5
6
7
8
9
10
11
参数选项

-a或--all:载入全部的模块/指定模块;
-c或--show-conf:显示所有模块的设置信息;
-d或--debug:使用排错模式;
-l或--list:显示可用的模块;
-r或--remove:卸载模块;
-t或--type:指定模块类型;
-v或--verbose:执行时显示详细的信息;
-V或--version:显示版本信息;
-help:显示帮助。

例如:

1
2
卸载:modprobe -r ip_vs 
载入:modprobe -a ip_vs

get_module

需要安装sysfsutils包之后才能产生该命令

1
yum -y install sysfsutils
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@lvs001 modprobe.d]# get_module ip_vs
initstate : live
refcnt : 2
srcversion : 0FB85919D62C4255E412E5C Parameters:
conn_tab_bits : 12
Sections:
.altinstr_replacement : 0xffffffffa039c2b8
.altinstructions : 0xffffffffa039ef98
.bss : 0xffffffffa03a1c60
.data : 0xffffffffa039ff00
.data.cacheline_aligned : 0xffffffffa03a1580
.data.read_mostly : 0xffffffffa03a1040
.exit.text : 0xffffffffa039c40e
.gnu.linkonce.this_module : 0xffffffffa03a1a20
.init.text : 0xffffffffa03aa000
.note.gnu.build-id : 0xffffffffa039c454
.rheldata : 0xffffffffa039fee0
.rodata : 0xffffffffa039c480
.rodata.str1.1 : 0xffffffffa039d6e8
.rodata.str1.8 : 0xffffffffa039dc90
.smp_locks : 0xffffffffa039eb68
.strtab : 0xffffffffa03ae2f8
.symtab : 0xffffffffa03aa4d0
.text : 0xffffffffa038a000
__kcrctab_gpl : 0xffffffffa039f540
__kcrctab : 0xffffffffa039fe80
__ksymtab_gpl : 0xffffffffa039f4f0
__ksymtab_strings : 0xffffffffa039f590
__ksymtab : 0xffffffffa039fdc0
__mcount_loc : 0xffffffffa039f6e8
__param : 0xffffffffa039f568
__verbose : 0xffffffffa03a1980
 

(转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe的更多相关文章

  1. linux下insmod lsmod rmmod

    insmod(install module) 功能说明:载入模块 install loadable kernel module 语法:insmod [-fkmpsvxX][-o <模块名称> ...

  2. linux内核及其模块的查询,加载,卸载 lsusb等

    http://blog.sina.com.cn/s/blog_53e81e2a0100zkxi.html 1,/sbin/update-modules文件,他是一个linux通用的模块管理脚本程序. ...

  3. ko内核模块文件以及载入模块命令modprobe insmod

    原文链接:https://blog.csdn.net/evenness/article/details/7655921?utm_source=blogxgwz5 modprobe: Load modu ...

  4. linux lsmod命令 及相关信息

    lsmod  (list modules) 语法:lsmod 功能: lsmod命令:是一个小程序,用来显示文件.proc/modules的信息,也就是显示当前内核模块装载的模块. 补充说明: 执行l ...

  5. Linux内核模块简介

    一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程.主要从模块开发中的常用指令.内核模块程序的结构.模块使用计数以及模块的编译等角度对内核模块进行介绍.在Linux系统 ...

  6. Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块

    Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...

  7. linux modprobe命令参数及用法详解--linux加载模块命令

    转:http://www.linuxso.com/command/modprobe.html modprobe(module probe) 功能说明:自动处理可载入模块. 语 法:modprobe [ ...

  8. linux内核模块笔记

    主题: 1. 嵌入式基础知识 2. linux内核介绍 3. 内核的编译和安装(x86) 4. 第一个模块 5. 模块的相关工具 6. 模块的符号导出 7. 模块的參数 1.看linux/module ...

  9. Linux内核模块管理命令

    1.insmod命令 在Linux系统下,insmod命令用于将给定的模块加载到内核中去,Linux系统有许多功能是通过模块的方式,在需要时才载入kernel,这样做可以使kernel较为精简,进而提 ...

随机推荐

  1. mysql学习笔记--数据库设计

    一.数据库基本概念 1. 关系:两个表的公共字段 2. 行:也称记录,也称实体 3. 列:也称字段,也称属性 4. 数据冗余:相同的数据存在不同的地方. 注意:冗余只能减少,不能杜绝. 减少冗余,只能 ...

  2. FloatingActionButton FAB 悬浮按钮

    FloatingActionButton简称FAB,这是一种比较美观的按钮: 1.使用前: FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App最主要的 ...

  3. android的事件分发传递机制

    事件的分发与传递最重要的三个处理方法是 dispatchTouchEvent onInterceptTouchEvent onTouchEvent 综合来说事件的 传递是由外层向里层传递,而处理是从里 ...

  4. thinkphp 视图(二)变量输出、赋值和替换

    view下的html文件会编译成php文件 编译的文件在runtime 下的temp目录 <p>{$email}</p> 会编译成 <?php echo $email; ...

  5. vue 需求 data中的数据之间的调用

    我遇到过这种情况  就是在我的data中 会有数据调用data中的其他数据 如图  我的alertInfoType需要拿到screeningCondition中type的值 用过vue的都知道 我是不 ...

  6. day 5,格式化输出,for,while, break,continue,列表

    本节内容: 1,格式化输出 2,数据类型 3,for 循环 4,while 循环 5,列表 pycharm的简单使用,设置pycharm自动生成日期和计算机用户名 ctrl+d复制一行 1,格式化输出 ...

  7. Linux 给文件夹或者文件增加权限

    chmod -R 777 文件夹参数-R是递归的意思777表示开放所有权限 chmod 777 test.sh chmod +x 某文件 如果给所有人添加可执行权限:chmod a+x 文件名:如果给 ...

  8. chrom中 background 调用pop.js

    //监听快捷键 chrome.commands.onCommand.addListener(function(command) { if (command == "cleanKey" ...

  9. 复制命令(XCOPY)

    XCOPY 命令: // 描述: 将文件或目录(包括子目录)从一个位置复制到另一个位置. // 语法: Xcopy <Source> [<Destination>] [/w] ...

  10. python中使用OpenCV处理图片

    1.导入OpenCV包 import cv2 2.读取图片 cv2.imread(image_path, mode)        读入函数,包含两个参数,第一个为图片路径及图片名,第二个为读取图片方 ...