Tại sao người lsmod | wc -l không bằng nhau ls / sys / mô-đun | wc -l


10

Tại sao hai lệnh này trả về kết quả khác nhau?

lsmod | wc -l
100

ls /sys/module | wc -l
138

Câu trả lời:


13

lsmodliệt kê tất cả các mô-đun động của bạn được tải.

Các mục trong /sys/moduletương ứng với các mô-đun động mô-đun được tích hợp vào kernel (và có các tham số cần truy cập được) thay vì được tải động. Ví dụ:

[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

Bạn có thể thấy ở đây mô-đun iptables được cấu hình như một mô-đun động. Đôi nghịch vơi:

[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

trong khi apparmor được tích hợp sẵn.


@MikeB khi bạn thấy CONFIG_X_X = có không tìm thấy ls -l / sys / module / ext4 ls: không thể truy cập / sys / module / ext4: Không có tệp hoặc thư mục như vậy
c4f4t0r

Vâng, có vẻ như các mô-đun tích hợp cần phải có các tham số để chúng hiển thị.
MikeyB

5
  • /sys/module/MODULENAME

MODULENAMElà tên của mô-đun có trong kernel. Tên mô-đun này sẽ luôn hiển thị nếu mô-đun được tải dưới dạng mô-đun động. Đây chính xác là những gì bạn có thể thấy khi bạn phát lsmodlệnh hoặc khi bạn kiểm tra /proc/modulestệp.

Nếu nó được tích hợp trực tiếp vào kernel, nó sẽ chỉ hiển thị nếu nó có phiên bản hoặc ít nhất một tham số. Các tham số có sẵn sau đó có sẵn trong thư mục:

  • /sys/module/MODULENAME/parameters
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.