我不明白为什么内核模块也如下所示cfg80211
列出:ps aux
$ ps aux | grep cfg80211
root 521 0.0 0.0 0 0 ? S< 16:09 0:00 [cfg80211]
答案1
列出内核线程是标准行为ps
,因为它们也是进程——只是一种不同的进程,因为它们运行在主管模式(有些人称之为“内核模式”)。
如果您运行ps ax
(或ps aux
)而不将其输出通过管道传输到grep
,您将看到首先列出的一大堆内核模块(然后可能是一些其他模块,它们散布在用户进程中,如果它们是稍后启动的)。
例如,这是ps ax
我的系统上当前输出的前 10 行:
PID TTY STAT TIME COMMAND
1 ? Ss 0:03 /sbin/init
2 ? S 0:01 [kthreadd]
3 ? S 97:17 [ksoftirqd/0]
6 ? S 0:00 [migration/0]
7 ? S 0:24 [watchdog/0]
8 ? S 0:00 [migration/1]
10 ? S 6:06 [ksoftirqd/1]
12 ? S 0:18 [watchdog/1]
13 ? S< 0:00 [cpuset]
lsmod
将列出已加载的模块。ps aux
将列出当前进程,包括与模块关联的内核进程。但是,它们是不同的。例如,已加载的内核模块可能有任意数量的内核进程与其关联(零个或多个)。