目录
一、概述
二、 使用方法
三、 输出格式
四、 示例
五、 相关命令
六、 高级用法
1、结合管道符 | 和 grep 命令
2、结合其他命令使用
七、应用和注意
一、概述
lsmod 是一个 Linux 命令行工具,用来列出当前内核加载的所有模块。这个命令对于了解哪些模块已经在系统中活跃非常有用,特别是在诊断硬件问题或调查系统行为的时候。
二、 使用方法
lsmod 命令没有太多选项,使用起来非常直接。在终端中输入 lsmod 并按回车键即可看到输出结果。如下图所示为命令用法:
Usage: lsmod
如下图所示:
三、 输出格式
lsmod 命令输出的每一行代表一个内核模块的信息,格式如下:
Module Size Used by
如下图所示:
具体字段解释如下:
- Module: 模块的名字。
- Size: 模块的大小(单位通常是千字节)。
- Used by: 表示有多少个其他模块依赖于该模块。如果这个数字大于零,则表示有其他模块引用了这个模块。
四、 示例
假设在终端中运行了 lsmod 命令,可能会看到类似于下面的输出:
root@quinn-ThinkPad-T430s:/studyLinux#
root@quinn-ThinkPad-T430s:/studyLinux# lsmod
Module Size Used by
btrfs 2019328 0
blake2b_generic 24576 0
xor 20480 1 btrfs
raid6_pq 126976 1 btrfs
ufs 126976 0
qnx4 12288 0
hfsplus 139264 0
hfs 77824 0
minix 49152 0
ntfs 139264 0
msdos 16384 0
jfs 299008 0
nls_ucs2_utils 8192 1 jfs
xfs 2363392 0
libcrc32c 12288 2 btrfs,xfs
cpuid 12288 0
tls 155648 0
rfcomm 102400 16
ccm 20480 6
cmac 12288 3
algif_hash 12288 1
algif_skcipher 16384 1
af_alg 32768 6 algif_hash,algif_skcipher
bnep 32768 2
binfmt_misc 24576 1
nls_iso8859_1 12288 1
snd_hda_codec_hdmi 94208 1
snd_ctl_led 24576 0
iwldvm 356352 0
snd_hda_codec_realtek 200704 1
btusb 77824 0
snd_hda_codec_generic 122880 1 snd_hda_codec_realtek
uvcvideo 139264 0
intel_rapl_msr 20480 0
intel_rapl_common 40960 1 intel_rapl_msr
videobuf2_vmalloc 20480 1 uvcvideo
uvc 12288 1 uvcvideo
videobuf2_memops 16384 1 videobuf2_vmalloc
mac80211 1724416 1 iwldvm
btrtl 32768 1 btusb
snd_hda_intel 61440 3
btintel 57344 1 btusb
libarc4 12288 1 mac80211
nouveau 3100672 0
videobuf2_v4l2 36864 1 uvcvideo
snd_intel_dspcfg 36864 1 snd_hda_intel
x86_pkg_temp_thermal 20480 0
btbcm 24576 1 btusb
mei_pxp 16384 0
videodev 356352 2 videobuf2_v4l2,uvcvideo
mei_hdcp 28672 0
intel_powerclamp 24576 0
snd_intel_sdw_acpi 16384 1 snd_intel_dspcfg
mxm_wmi 12288 1 nouveau
i915 4288512 5
snd_hda_codec 204800 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
btmtk 12288 1 btusb
videobuf2_common 81920 4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
bluetooth 1028096 44 btrtl,btmtk,btintel,btbcm,bnep,btusb,rfcomm
drm_gpuvm 45056 1 nouveau
drm_exec 12288 2 drm_gpuvm,nouveau
gpu_sched 61440 1 nouveau
drm_ttm_helper 12288 1 nouveau
mc 81920 4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
snd_hda_core 139264 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
drm_buddy 20480 1 i915
ttm 110592 3 drm_ttm_helper,i915,nouveau
ecdh_generic 16384 2 bluetooth
ecc 45056 1 ecdh_generic
snd_hwdep 20480 1 snd_hda_codec
drm_display_helper 237568 2 i915,nouveau
thinkpad_acpi 163840 0
coretemp 24576 0
crct10dif_pclmul 12288 1
snd_pcm 192512 4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
iwlwifi 598016 1 iwldvm
cec 94208 2 drm_display_helper,i915
rc_core 73728 1 cec
i2c_algo_bit 16384 2 i915,nouveau
nvram 16384 1 thinkpad_acpi
polyval_clmulni 12288 0
polyval_generic 12288 1 polyval_clmulni
ghash_clmulni_intel 16384 0
snd_seq_midi 24576 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 57344 1 snd_seq_midi
snd_seq 114688 2 snd_seq_midi,snd_seq_midi_event
sha256_ssse3 32768 0
sha1_ssse3 32768 0
aesni_intel 356352 8
cfg80211 1327104 3 iwldvm,iwlwifi,mac80211
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
mei_me 53248 2
snd_timer 49152 2 snd_seq,snd_pcm
crypto_simd 16384 1 aesni_intel
cryptd 24576 3 crypto_simd,ghash_clmulni_intel
mei 167936 5 mei_hdcp,mei_pxp,mei_me
snd 143360 19 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,thinkpad_acpi,snd_pcm,snd_rawmidi
rapl 20480 0
intel_cstate 24576 0
soundcore 16384 2 snd_ctl_led,snd
at24 28672 0
input_leds 12288 0
ledtrig_audio 12288 2 snd_ctl_led,thinkpad_acpi
platform_profile 12288 1 thinkpad_acpi
think_lmi 45056 0
serio_raw 20480 0
mac_hid 12288 0
wmi_bmof 12288 0
firmware_attributes_class 12288 1 think_lmi
sch_fq_codel 24576 2
msr 12288 0
parport_pc 53248 0
ppdev 24576 0
lp 28672 0
parport 73728 3 parport_pc,lp,ppdev
ramoops 36864 0
pstore_blk 16384 0
pstore_zone 32768 1 pstore_blk
efi_pstore 12288 0
reed_solomon 24576 1 ramoops
ip_tables 32768 0
x_tables 65536 1 ip_tables
autofs4 57344 2
crc32_pclmul 12288 0
i2c_i801 36864 0
ahci 49152 2
sdhci_pci 90112 0
xhci_pci 24576 0
cqhci 40960 1 sdhci_pci
i2c_smbus 16384 1 i2c_i801
libahci 53248 1 ahci
lpc_ich 32768 0
e1000e 356352 0
video 73728 3 thinkpad_acpi,i915,nouveau
sdhci 90112 1 sdhci_pci
psmouse 217088 0
xhci_pci_renesas 20480 1 xhci_pci
wmi 28672 5 video,wmi_bmof,think_lmi,mxm_wmi,nouveau
root@quinn-ThinkPad-T430s:/studyLinux#
这里的每一行都对应一个已经加载到内核中的模块。例如,iwlwifi 模块的大小为 598016 千字节,并且没有其他模块依赖于它。
五、 相关命令
除了 lsmod 外,还有几个与内核模块管理相关的命令:
- insmod: 用于加载一个模块到内核中。
- rmmod: 用于从内核中移除一个模块。
- modinfo: 提供模块的详细信息,包括它的描述、版本号、作者以及依赖关系等。
六、 高级用法
1、结合管道符 | 和 grep 命令
如果想要搜索特定的模块,可以结合管道符 | 和 grep 命令一起使用,例如:
lsmod | grep iwlwifi
这将只显示包含 iwlwifi关键词的模块信息。如下图所示:
2、结合其他命令使用
lsmod 常与其他命令结合使用,比如 modinfo 来获取模块的详细信息:
lsmod | grep '模块名称' | awk '{print $1}' | xargs modinfo
比如,输入如下命令
lsmod | grep 'iwlwifi' | awk '{print $1}' | xargs modinfo
实际操作如下:
七、应用和注意
1、当需要知道系统中已经加载了哪些驱动或其他内核模块时,lsmod 是一个非常有用的工具。例如,在解决硬件兼容性问题时,查看是否有相应的驱动模块被加载,可以帮助定位问题所在。
2、如果一个模块显示为 “0”在 “Used by”列,这通常意味着该模块当前没有被任何其他模块或内核部分所依赖,但它仍然被加载到内核中。在某些情况下,这可能表示该模块可以被安全地卸载(使用 rmmod 命令),但这需要谨慎操作,因为某些模块即使不被其他模块直接依赖,也可能对系统的稳定运行至关重要。
3、lsmod 命令实际上是通过读取 /proc/modules 文件来获取模块信息的,这个文件包含了当前内核加载的所有模块的列表和相关信息。
4、如果想了解某个特定模块的更详细信息,可以使用 modinfo 命令加上模块名来查看该模块的元数据,如版本号、作者、描述等。
总之,lsmod 是一个简单的但非常实用的命令,可以帮助用户更好地理解当前系统内核的状态及其加载的模块。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。