--- title: "Rethinking PID 1" date: 2021-10-13T21:39:22+08:00 tags: [] categories: [] weight: 50 show_comments: true draft: false --- 文章介绍了初始化进程(init)应该具有的特点, 同时介绍了几个初始化进程以及其优缺点. 一个好的初始化进程应该: - 尽可能少启动程序(仅必要时再启动), 并且并行启动这些服务. - 并行启动所有监听 socket , 即先放置 "placeholder" , 当 socket 真正得到需要处理的消息时再启动与之相对应的服务. - 并行启动 D-Bus 服务, 与 socket 类似. - 并行挂载文件系统, 即先放置虚假的目录, 当被读取时阻塞调用进程并真正挂载文件系统, 然后处理并返回调用结果. - 降低初始化进程为系统带来的额外的开销. - 跟踪进程, 借助 cgroup 来跟踪进程所 fork 的子进程, 并防止其逃离监视. - 控制进程的运行环境, 借助 cgroup 来控制进程所获得的资源. 原文: [http://0pointer.de/blog/projects/systemd.html](http://0pointer.de/blog/projects/systemd.html)