很多人经常想知道,Linux/Unix操作系统是如何启动的?我怎样才能在启动过程中运行一个进程,这样我就不必每次都手动启动它了?为此,必须了解当前向其添加任何内容的底层环境流程。
在典型的 Linux 系统上,我更喜欢 Debian,引导加载程序指向内核,而内核又指向 /etc 下的文件 inittab。引导加载程序和内核之间的交互非常复杂,需要另外一篇文章。
- /etc/inittab 是一个包含一组指令的文件,用于调用 /etc 目录下的特定目录。这是一个 shell 脚本,如下所示:
# /etc/inittab:init(8) 配置。
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $#默认运行级别。
id:2:initdefault:# 启动时系统配置/初始化脚本。
# 除了以紧急 (-b) 模式启动时,此命令首先运行。
si::sysinit: /etc/init.d/rcS - 然后,系统调用/etc/init.d/rcS Shell脚本。然后该脚本执行在 /etc/rcS.d/ 目录中找到的每个 shell 脚本。将应用程序添加到系统后,会将其启动脚本放在 /etc/rcS.d/ 或 /etc/rc2.d/ 目录中。这组脚本最初运行并且是系统特定的并且不能被篡改。在这组脚本生成每个进程后,/etc/init.d/rcS 脚本会调用 /etc/rc2.d/ 目录中的所有文件。 /etc/rc2.d/ 目录通常是应用软件而不是系统特定的软件。这些目录中的每个文件都有一个 S(开始)和一个数字。例如:S43portmap。这个数字并不代表它会启动第43个进程,而是用来错开启动哪个进程。所以如果你想在 S43portmap 之前或之后启动一些东西,你可以在 S40portmap 之前将前缀设置为 S40,在 S50portmap 之后设置为 S50。
- 如果添加要运行的应用程序,应始终将其添加到 /etc/rc2.d/ 目录。 /etc/rc2.d/ 是大多数 Linux 系统上使用的默认运行级别。
- 如果您发现自己在 /etc/rc2.d/ 目录中,您可能会注意到每个文件实际上都通过符号链接返回到 /etc/init.d/ 目录。你其实是对的。如果您考虑一下,它实际上非常简洁,因为您可以创建一个具有不同数字的符号链接以在不同时间启动这些脚本中的任何一个。这也为用户提供了灵活性,可以轻松修改其系统的启动过程。
现在告诉我如何在 Windows 中执行此操作!
有关 Linux 和 UNIX 的更多信息,请访问 http://www.lainoox.com