我已经编写了自定义 init (PID 1) 脚本。在该脚本中,我刚刚安装了必要的文件系统,但如果我运行ps aux
该列表,则类似于以下内容:
/ # ps aux
PID USER TIME COMMAND
1 root 0:00 /custom/init
2 root 0:00 [kthreadd]
3 root 0:00 [rcu_gp]
4 root 0:00 [rcu_par_gp]
5 root 0:00 [kworker/0:0-eve]
6 root 0:00 [kworker/0:0H-kb]
7 root 0:00 [kworker/u2:0-ev]
8 root 0:00 [mm_percpu_wq]
9 root 0:00 [ksoftirqd/0]
10 root 0:00 [rcu_sched]
11 root 0:00 [rcu_bh]
12 root 0:00 [migration/0]
13 root 0:00 [cpuhp/0]
14 root 0:00 [kworker/0:1-eve]
15 root 0:00 [kdevtmpfs]
16 root 0:00 [netns]
17 root 0:00 [kauditd]
18 root 0:00 [kworker/u2:1-ev]
21 root 0:00 [oom_reaper]
22 root 0:00 [kworker/u2:2-ev]
161 root 0:00 [writeback]
162 root 0:00 [kcompactd0]
164 root 0:00 [ksmd]
165 root 0:00 [crypto]
166 root 0:00 [kintegrityd]
167 root 0:00 [kblockd]
275 root 0:00 [kswapd0]
289 root 0:00 [kworker/u3:0]
443 root 0:00 [kthrotld]
491 root 0:00 [iscsi_eh]
518 root 0:00 [ipv6_addrconf]
527 root 0:00 [kstrp]
543 root 0:00 [ext4-rsv-conver]
544 root 0:00 [kworker/0:1H-kb]
546 root 0:00 /bin/ash
547 root 0:00 ps aux
是什么创建了这些守护进程,即使我没有在自定义初始化脚本中处理这个问题?
答案1
它们由内核启动;例如,ksoftirqd
线程开始于kernel/softirq.c
。