Назад | Перейти на главную страницу

Почему «lsmod | wc -l »не равно« ls / sys / module | wc -l »

Почему эти две команды возвращают разные результаты?

lsmod | wc -l
100

ls /sys/module | wc -l
138

lsmod перечисляет все ваши динамичный модули, которые загружены.

Записи в /sys/module соответствуют динамическим модулям и модули, которые встроены в ядро ​​(и имеют параметры, которые должны быть доступны), а не загружаются динамически. Например:

[michael@brazzers:~]$ ls -d /sys/module/ip_tables/
/sys/module/ip_tables/
[michael@brazzers:~]$ lsmod |grep ^ip_tables
ip_tables              26995  3 iptable_filter,iptable_mangle,iptable_nat
[michael@brazzers:~]$ grep CONFIG_NF_NAT_IPV4 /boot/config-3.8.0-30-generic
CONFIG_NF_NAT_IPV4=m

Вы можете видеть здесь, что модуль iptables настроен как динамический модуль. В отличие от:

[michael@brazzers:~]$ ls -d /sys/module/apparmor/
/sys/module/apparmor/
[michael@brazzers:~]$ lsmod |grep ^apparmor
[michael@brazzers:~]$ grep APPARMOR /boot/config-3.8.0-30-generic 
CONFIG_SECURITY_APPARMOR=y

тогда как apparmor встроен.

  • /sys/module/MODULENAME

MODULENAME это имя модуля в ядре. Это имя модуля всегда будет отображаться, если модуль загружен как динамический. Это именно то, что вы можете увидеть, выполнив lsmod команда или когда вы проверяете /proc/modules файл.

Если он встроен непосредственно в ядро, он будет отображаться только в том случае, если у него есть версия или хотя бы один параметр. После этого доступные параметры доступны в каталоге:

  • /sys/module/MODULENAME/parameters