Linux进程管理与硬件信息发现
1. 进程树
在Linux系统中,当我们在shell中运行命令时,shell能够知晓这些命令对应的进程ID(PID),并且可以在我们按下 Ctrl + C 时向这些进程发送信号以终止它们。这意味着shell对我们让它启动的进程具有一定的控制权。实际上,从shell启动的所有进程都会成为该shell进程的子进程。
而shell本身也是一个子进程,如果是在Linux桌面环境中,它是终端模拟器的子进程;如果是通过SSH远程连接,它是OpenSSH守护进程的子进程。那么,是否存在所有进程的父进程呢?
事实上,存在一个所有进程的父进程,所有正在运行的进程关系构成了一棵以单一根节点(PID = 1)为根的树。出于历史原因,这个所有进程的父进程通常被称为 init 进程。在通用的Linux发行版中,很长一段时间里这个进程是 System V init 。
PID=1的进程可以是任何可执行文件。当我们启动Linux系统时,可以指定将哪个可执行文件作为PID=1加载。例如,要以救援模式启动系统,可以在GRUB命令行中添加 init=/bin/bash (不过,最好使用发行版引导菜单项中的内置救援选项,因为它可能会传递额外的有用参数),这样内核会进入单用户shell会话,而不是启动正常的引导过程。一些仅将Linux用作硬件抽象层的嵌入式系统可能会启动自定义进程。通常情况下,PID=1的进程充当服务管理器。
System V init 作为事实上的标准服务管理器使用了二十多年,但现
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



