How to list loaded kernel modules in Linux

Driver checks and kernel troubleshooting often start by confirming which loadable modules the running Linux kernel has active. Listing the module table shows whether a driver or subsystem was loaded separately, whether another module is using it, and which name to use before a later modprobe load or removal step.

The lsmod command formats the live module list from /proc/modules. Its columns show the module name, size in bytes, and a Used by field that starts with the reference count and can include dependent module names.

The list reflects the currently running kernel, not every module package installed under /lib/modules. Containers usually show the host kernel's module table, minimal images may need the kmod package before lsmod exists, and features built directly into the kernel can appear under /sys/module without showing up as loadable entries in lsmod.

Steps to list loaded kernel modules in Linux:

  1. List the loaded module table with lsmod.
    $ lsmod
    Module                  Size  Used by
    bridge                421888  1 br_netfilter
    dummy                  12288  0
    nf_tables             380928  2 nft_ct,nft_chain_nat
    xfs                  2293760  1
    ##### snipped #####

    The first column is the module name. Size is the module footprint in bytes, and Used by begins with the current reference count.

  2. Read /proc/modules when you need the raw records behind lsmod.
    $ cat /proc/modules
    bridge 421888 1 br_netfilter, Live 0x0000000000000000
    dummy 12288 0 - Live 0x0000000000000000
    nf_tables 380928 2 nft_ct,nft_chain_nat, Live 0x0000000000000000
    xfs 2293760 1 - Live 0x0000000000000000
    ##### snipped #####

    lsmod reads this file and formats the same loaded-module set into columns.

  3. Check dependent modules when the Used by field names them.
    $ ls /sys/module/bridge/holders
    br_netfilter

    Each entry under /sys/module/<module>/holders is another module currently holding a reference to that module.

  4. Inspect sysfs for a kernel feature that does not appear in lsmod.
    $ ls /sys/module/loop
    parameters
    uevent

    A directory under /sys/module can also exist for a feature built into the kernel image. Use lsmod to confirm whether the name is loaded as a separate module.