Linux 开机程序之研讨( 七 )


改成 6 , 对於 beginner 来说 , 系统一启动完就直接进入 XWindows 也许是一个
不错的设定方法 ......

介绍完 /etc/inittab 之後 , 我们接著看 rc.M ! 由前面的流程当中 , 我们看到
rc.M 中又包含了四个 shell script , 其中 rc.inet1 及 rc.inet2 是有关於网路
的设定 ; rc.font 是作字型的设定 , 而 rc.local 中可以放一些想要起动的
daemon .

我们现在就来看看 rc.M , 依照往例 , 前面有两个 "#" 的为加上去的注解 .
只有一个 "#" 的为原来的注解 :

#!/bin/sh
#
# rc.M; This file is executed by init(8) when the system is being
#;;;;initialized for one of the "multi user" run levels (i.e.
#;;;;levels 1 through 6).; It usually does mounting of file
#;;;;systems et al.
#
# Version:;;;@(#)/etc/rc.d/rc.M;;;2.02;02/26/93
#
# Author:;;;;Fred N. van Kempen,
#;;;;Heavily modified by Patrick Volkerding
#

## 显示进入多人模式

echo "Going multiuser..."


## 下面一列的意思是 : 假如你在文字模式的 console 下 , 在15分钟内都没有动作
## 的话 , 萤幕就会自动暗下来 , 简单的说 , 就是 screen saver 的功能 .

/bin/setterm -blank 15


## 执行 crond 这个 daemon . 不用说 , crond 在系统中扮演了很重要的角色 ,
## 它负责每过一段时间後 , 就去看看 /var/spool/cron/crontabs 中有那些 file
## 要 run , 这些 file 往往有一个固定的时间 , 比如说 : 每个月的 1 号 , 每
## 天凌晨等 ...... 我们可以用平常的编辑器编好一个档案 , 里面的格式如下 :
##
##;分 时 日 月 星期 命令
##
## 举例来说 , 59 23 31 12; */etc/wall happy_new_year
## 在每年的 12 月 31 号晚上 11 点 59 分 会对每个系统上的 user 送出
## happy_new_year 中的内容
##
## 接著我们可以利用 crontab <档案名> 这个指令来把此档案放到
## /var/spool/cron/crontabs中□. 我们可以看看 /var/spool/cron/crontab 下
## 有一个 root 的档案 , 看看里面的内容 :
##
##0,5,10,15,20,25,30,35,40,45,50,55 * * * *;;;;/usr/lib/atrun
##
## 所以各位看到了 , 在前两期提到的 at 命令是五分钟才被 run 一次的
##
## 再举一个简单的例子好了 : 我们先用一般的文书编辑器造出一个名为 crontest
## 的档案 , 内容如下 :
##
##5 * * * * ls -la ~/ >> ~/hehehaha
##
## 接著 , 我们键入下面的命令 :; crontab crontest
## 此时 , 从内容得知 , 每五分钟 crond 就会执行 ls -la , 把你 home directory
## 的内容加入 hehehaha 这个档案中 .
##
## 当然啦 ! 这个例子简直是毫无意义可言 :); 但是 , 大家既然知道了基本原理 ,
## 利用 crontab , at 这些指令 , 就可以简化一些系统管理的动作 , 同时在执行
## 一些工作时 , 也会比较有弹性 .

/usr/sbin/crond -l10 >>/var/adm/cron 2>&1


## 假如 /etc/HOSTNAME 不能读取的话 , 就把 darkstar.frop.org 当成 HOSTNAME
## 中的内容 . 老实说 , 下面这三列去掉也不打紧 ......

if [ ! -r /etc/HOSTNAME ]; then
echo "darkstar.frop.org" > /etc/HOSTNAME
fi


## 下面从 if 到 fi 夹起来的部份 , 主要就是在执行 rc.inet1 , rc.inet2 . 这
## 些都是网路设定的工作 , 尤其是 rc.inet2 , 启动了一大堆 daemon , 这部份
## 要牵扯到的东西太多了 . 像 subnet 与 netmask 等 ...... 类似这种观念 ,
## 都不是三言两语就可以玩完的 , 所以就留待以後再说 .

if [ -x /etc/rc.d/rc.inet1 ];
then
/bin/hostname `cat /etc/HOSTNAME | cut -f1 -d .`
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2
else
/sbin/hostname_notcp `cat /etc/HOSTNAME | cut -f1 -d .`
/usr/sbin/syslogd
/usr/sbin/klogd
/usr/sbin/lpd
fi


## 在某些资源独占的情况下 , 一些应用程式往往会制造出 lock 档 . 假如这些

推荐阅读