Linux系统的启动过程、初始化和关闭(6)

事件的过程如下:

内核在几个地方查找init并运行它找到的第一个

init运行/etc/rc.d/rc.sysinit

rc.sysinit做一组必需的事然后运行rc.serial (如果存在)

init在默认运行级别运行所有的script

init运行rc.local

默认的运行级别在/etc/inittab中定义. 您应该在前面有一行类似:

id:3:initdefault:

在这里, 您看到第二栏, 默认运行水平是3, 大多数系统都是这样. 如果您想修改它您可以手工编辑/etc/inittab改掉3. 在改inittab时需要非常小心. 如果您陷入困境, 您可以重启动并:

LILO boot: linux single

这将允许您以单用户模式启动, 并可修改inittab.

现在, 它如何运行所有正确的script? 如果您在rc3.d输入ls -l ,您可以看到:

lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network

lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog

lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron

lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet

lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs

lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs

lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init

lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local

您可以看到这个目录中没有真的文件, 只有对init.d目录中的script的连接. 这个连接在前面还有一个S和一个数字. S是指启动这个特定的script, K是指结束它. 数字是顺序. Init将根据顺序启动所有的services. 您可以重复数字, 但这只会把您搞混. 您只能用一个两位数字和一个大写的S或K来启动或结束您需要的 service。

Init如何启动和结束service? 很简单. 每个script都写了一个接收参数用来启动 和结束. 您可以用命令行来执行这些script, 如:

/etc/rc.d/init.d/httpd.init stop

结束httpd服务器. Init只需读文件名, 如果有K, 它就用stop参数调用script. 如果有S,则用start参数. 那么运行级别呢? 有些想要一个简单的方法将机器设置成多用途. 我可以有一个服务器运行级别, 运行httpd, 发送邮件, 网络等等. 然后, 我可以有一个用户运行级别, 运行xdm等等。

Init Runlevels

一般的, Red Hat Linux运行在级别 3---完全多用户模式. Red Hat Linux使用以下运行级别:

0

停止。

1

单用户模式.

2

没有NFS的多用户模式.

3

完全多用户模式.

6

重启动.

如果您的机器因为毁坏了/etc/inittab无法启动, 或者因为毁坏了/etc/passwd 不让您登录或者您忘了口令, 您可以在LILO提示下输入linux 1进入单用户模式. 您可以在这个模式下改正错误。

Initscript工具

chkconfig工具提供了一个简单的命令行的工具来维护/etc/rc.d 目录. 它使管理员不需要直接操作/etc/rc.d中的许多连接。

另外, ntsysv工具提供了面向屏幕的用户界面。

详情请参见chkconfig和ntsysv的man page

在启动时运行程序

在启动时或者修改运行级别时, 当所有的其他初始化完成后, 将执行文件/etc/rc.d/rc.local. 您可以在这增加新的初始程序. 例如, 您想启动更多的管理工具, 或者初始化打印机. 另外, 如果您需要串口设置, 您可以编辑/etc/rc.d/rc.serial, 它将在启动时自动运行.

默认地, /etc/rc.d/rc.local简单地用您的内核版本和机器类型创建一个好看的登录标志。

关闭

要关闭Red Hat Linux, 发出shutdown命令. 您可以阅读shutdown man page 得到完整的信息, 但是有两个最常见的用法:

shutdown -h now

shutdown -r now

每个都会干净地关闭系统. 在关闭之后, 前者会停止机器, 后者将重启动。

虽然现在如果运行在级别1至5, 可以用reboot和halt 命令来替代shutdown, 但这是一个坏习惯, 因为并不是所有类Linux的操作系统都有这个特性。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8b32a54226326e67a870723593a6c547.html