Linux get_module命令介绍
get_module命令是get module的缩写,它用来获取内核模块的信息,包括模块的名称、大小、依赖关系、状态、参数等。get_module命令可以帮助你了解内核模块的功能和配置,以及检查模块是否正常工作。
Linux get_module命令适用的Linux版本
get_module命令适用于大多数Linux发行版,如Ubuntu、Debian、Fedora、CentOS等。如果你的Linux系统没有安装get_module命令,你可以使用以下命令来安装:
- 对于基于Debian的系统,如Ubuntu,你可以使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get update
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install kmod
- 对于基于Red Hat的系统,如Fedora,你可以使用yum命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install kmod
- 对于基于Arch的系统,如Manjaro,你可以使用pacman命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -Syu
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S kmod
Linux get_module命令的基本语法
get_module命令的基本语法格式如下:
get_module [选项] [模块名]
其中,模块名是要查询的内核模块的名称,可以是完整的名称,也可以是部分的名称。如果不指定模块名,get_module命令会显示所有已加载的内核模块的信息。
Linux get_module命令的常用选项或参数说明
get_module命令有以下常用的选项或参数:
选项 | 参数 | 说明 |
---|---|---|
-a | 无 | 显示所有内核模块的信息,包括未加载的模块 |
-d | 无 | 显示模块的依赖关系,即哪些模块依赖于该模块,以及该模块依赖于哪些模块 |
-f | 无 | 强制刷新模块的信息,即从内核重新读取模块的信息,而不是从缓存中读取 |
-n | 无 | 不显示模块的路径,只显示模块的名称 |
-p | 无 | 显示模块的参数,即模块在加载时可以接受的选项和值 |
-s | 无 | 显示模块的大小,以字节为单位 |
-t | 无 | 显示模块的状态,即模块是已加载、未加载还是正在加载 |
-v | 无 | 显示模块的版本,即模块的版本号和签名 |
Linux get_module命令的实例
以下是一些使用get_module命令的实例:
实例1:显示所有已加载的内核模块的信息
如果不指定任何选项和参数,get_module命令会显示所有已加载的内核模块的信息,包括模块的名称、大小、依赖关系、状态、参数等。例如:
[linux@bashcommandnotfound.cn ~]$ get_module
Module Size Used by
nls_iso8859_1 16384 1
nls_cp437 20480 1
vfat 24576 1
fat 86016 1 vfat
usb_storage 81920 2 uas
uas 28672 0
usbhid 65536 0
hid_generic 16384 0
hid 143360 2 usbhid,hid_generic
snd_hda_codec_hdmi 73728 1
snd_hda_codec_realtek 135168 1
snd_hda_codec_generic 98304 1 snd_hda_codec_realtek
ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_intel 57344 4
snd_intel_dspcfg 28672 1 snd_hda_intel
snd_hda_codec 167936 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core 106496 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 147456 4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
snd_timer 45056 1 snd_pcm
snd 98304 16 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm
soundcore 16384 1 snd
...
输出的结果可能会很长,你可以使用分页命令如less或more来查看,或者使用重定向命令如>或>>来保存到文件中。
实例2:显示指定的内核模块的信息
如果指定一个或多个模块名,get_module命令会显示这些模块的信息,而不是所有模块的信息。例如,如果你想查看usb_storage模块的信息,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ get_module usb_storage
Module Size Used by
usb_storage 81920 2 uas
你可以看到,usb_storage模块的大小是81920字节,它被uas模块使用。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module usb_storage hid
Module Size Used by
usb_storage 81920 2 uas
hid 143360 2 usbhid,hid_generic
你可以看到,usb_storage模块和hid模块的信息都被显示出来了。
实例3:显示所有内核模块的信息,包括未加载的模块
如果你想查看所有内核模块的信息,不管它们是否已经加载,你可以使用-a选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -a
Module Size Used by Status
nls_iso8859_1 16384 1 live
nls_cp437 20480 1 live
vfat 24576 1 live
fat 86016 1 vfat live
usb_storage 81920 2 uas live
uas 28672 0 live
...
实例4:显示模块的依赖关系
如果你想查看模块的依赖关系,即哪些模块依赖于该模块,以及该模块依赖于哪些模块,你可以使用-d选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -d usb_storage
Module Size Used by
usb_storage 81920 2 uas
uas 28672 0
你可以看到,usb_storage模块被uas模块使用,而uas模块没有被其他模块使用。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -d usb_storage hid
Module Size Used by
usb_storage 81920 2 uas
hid 143360 2 usbhid,hid_generic
uas 28672 0
usbhid 65536 0
hid_generic 16384 0
你可以看到,usb_storage模块和hid模块的依赖关系都被显示出来了。
实例5:强制刷新模块的信息
如果你想从内核重新读取模块的信息,而不是从缓存中读取,你可以使用-f选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -f usb_storage
Module Size Used by
usb_storage 81920 2 uas
这样,你可以确保获取到最新的模块的信息,而不是可能过时的缓存的信息。
实例6:不显示模块的路径,只显示模块的名称
如果你不想看到模块的路径,只想看到模块的名称,你可以使用-n选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -n usb_storage
usb_storage
你可以看到,只有模块的名称被显示出来了,而没有模块的路径。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -n usb_storage hid
usb_storage
hid
你可以看到,只有模块的名称被显示出来了,而没有模块的路径。
实例7:显示模块的参数
如果你想查看模块的参数,即模块在加载时可以接受的选项和值,你可以使用-p选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -p usb_storage
Module Size Used by Parameters
usb_storage 81920 2 uas quirks=,removable=,delay_use=,sense_type=
你可以看到,usb_storage模块有四个参数,分别是quirks、removable、delay_use和sense_type,它们都有默认的值,你可以在加载模块时修改它们的值,例如:
[linux@bashcommandnotfound.cn ~]$ sudo modprobe usb_storage removable=1
这样,你可以让usb_storage模块把所有的USB存储设备都当作可移动的,而不是根据设备的报告来判断。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -p usb_storage hid
Module Size Used by Parameters
usb_storage 81920 2 uas quirks=,removable=,delay_use=,sense_type=
hid 143360 2 usbhid,hid_generic debug_events=0,debug_activate=0,ignore_special_drivers=0,ignore_legacy_drivers=0
你可以看到,usb_storage模块和hid模块的参数都被显示出来了。
实例8:显示模块的大小
如果你想查看模块的大小,以字节为单位,你可以使用-s选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -s usb_storage
Module Size
usb_storage 81920
你可以看到,usb_storage模块的大小是81920字节。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -s usb_storage hid
Module Size
usb_storage 81920
hid 143360
你可以看到,usb_storage模块和hid模块的大小都被显示出来了。
实例9:显示模块的状态
如果你想查看模块的状态,即模块是已加载、未加载还是正在加载,你可以使用-t选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -t usb_storage
Module Status
usb_storage live
你可以看到,usb_storage模块的状态是live,即已加载。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -t usb_storage hid
Module Status
usb_storage live
hid live
你可以看到,usb_storage模块和hid模块的状态都是live,即已加载。
实例10:显示模块的版本
如果你想查看模块的版本,即模块的版本号和签名,你可以使用-v选项,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -v usb_storage
Module Version
usb_storage 1.0.0 (GPL)
你可以看到,usb_storage模块的版本是1.0.0,它的许可证是GPL。你也可以指定多个模块名,用空格隔开,例如:
[linux@bashcommandnotfound.cn ~]$ get_module -v usb_storage hid
Module Version
usb_storage 1.0.0 (GPL)
hid 1.1.1 (GPL)
你可以看到,usb_storage模块和hid模块的版本都被显示出来了。
Linux get_module命令的注意事项
以下是一些使用get_module命令的注意事项:
- 如果你输入的模块名不存在或拼写错误,get_module命令会提示你bash: get_module: command not found,这时你可以检查你的输入是否正确,或者使用tab键来自动补全模块名。
- 如果你想加载或卸载模块,你可以使用modprobe或rmmod命令,而不是get_module命令,get_module命令只能查询模块的信息,不能修改模块的状态。
- 如果你想查看模块的源代码或文档,你可以在/usr/src/linux目录下找到对应的文件,例如,usb_storage模块的源代码文件是/usr/src/linux/drivers/usb/storage/usb.c,文档文件是/usr/src/linux/Documentation/usb/storage.txt。
Linux get_module命令的相关命令
以下是一些和get_module命令相关的命令,你可以点击链接查看更多的介绍和实例:
评论区