4.1.4 init和/etc/inittab
init的手册页指出"init是所有进程之父"。它的主要任务是根据存储于/etc/inittab中的脚本创建进程。当装入内核之后,许多Linux启动进程的方式来源于另一个UNIX系统的SystemV。事实上,Linux的init命令与SystemV的init命令是兼容的,并且启动脚本也模仿SystemV的init的方式,虽然init作为"引导内核的最后一步",但它却是进行初始化和配置的第一个命令,通过从控制台或X终端窗口的命令行使用pstree命令可以查看该进程。
pstree命令用ASCII字符显示树状结构,清晰地表达了程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程序视为基层,并显示之后的所有程序;若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。
主要参数:
- -a:显示每个程序的完整指令,包含路径、参数或常驻服务的标志。
- -c:不使用精简标志。
- -G:使用VT100终端机的列绘图字符。
- -h:列出树状图时,特别标明现在执行的程序。
- -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
- -l:采用长列格式显示树状图。
- -n:用程序识别码排序,默认是以程序名称来排序。
- -p:显示程序识别码。
- -u:显示用户名称。
- -U:使用UTF-8列绘图字符。
- -V:显示版本信息。
在命令行输入"pstree -l",如图4-3所示。
可以看到init是系统的第一个进程,所有子进程的父进程。init通过解析/etc/inittab并参照默认或设定的运行级运行/etc/rc.d中的脚本。每个脚本可以启动或终止一个诸如网络、邮件、新闻或Web的服务。

图4-3 pstree命令输出