快捷搜索:   nginx

让Linux懂得为你开门—LINUX系统的自动作业控制

桂剑
每次进入Linux系统的时候,总是看到类似于下面的登录画面:
Red Hat Linux release 6.2(Zoot)
Kernel 2.2.14-5.0 on an i686
这种冷冰冰的欢迎让人觉得很不友好。而且,有时候我们不仅希望能够自定义漂亮的登录画面,更希望系统在启动的时候自动执行自定义的脚本,这可以做到吗?

当然可以。和UNIX一样,Linux不但是一种多任务系统,而且一个很明显的优点,就是能够灵活的允许基于系统时间或时间的作业控制。前面我们希望的就是系统登录时的自动作业控制,下面我们就以它为例来分析Linux的自动作业控制(以red hat 6.2为例)。

1. 启动脚本的概念
Linux的目录树结构中,/etc目录包括了所有与系统启动有关的配置文件,例如lilo.conf, profiles,inittab等,其中rc.d目录包括了系统启动时的所有运行脚本。这类脚本称为rc脚本,也称为运行控制脚本。其中rc.d目录下按照运行级别的不同又分为多个脚本目录。如下:
#ls /etc/rc.d
init.d rc.local rc0.d rc2.d rc4.d rc6.d
rc rc.sysinit rc1.d rc3.d rc5.d
这里的rc.sysinit作为系统的初始化脚本,是每一个运行级都要首先运行的。而rc.local则是每一个运行级别在最后都要运行的。在不同的运行级别,运行不同的rcx.d内的脚本。缺省情况下,每次启动时进入运行级别3,即有网络支持的标准多用户模式。我们来看rc3.d目录下有些什么样的脚本,如下:
#ls /etc/rc.d/rc3.d
K20nfs K35smb S10network S30syslog S60lpd S99linuxconf
K20rstatd K60marsnwe S11portmap S35identd S75keytable S99local
K20rusersd K84ypserv S14nfslock S40atd S80sendmail
K20rwalld K92ipchains S16apmd S40crond S85gpm
K20rwhod S05kudzu S20random S45pcmcia S85httpd
K34yppasswdd S10dualconf S25netfs S50inet S90xfs
每个脚本命名的方式是“前缀 序号 脚本名”。在前缀后面,每一个脚本都有标识自身的序号,这个序号控制着脚本的运行顺序,而且前缀为K或S也各有不同的含义,其中:
K为前缀时表示运行脚本将删除(Kill)一个进程;
S为前缀时表示运行脚本将启动(Start)一个进程。

2. 通过创建自己的脚本来实现系统启动时的自动作业
如上所述,可以在rc3.d建立自己的脚本文件,来实现系统启动时的自动运行。为了不和系统原有的脚本发生冲突,应该在执行完系统的其他所有脚本之后才开始运行,因此,创建的脚本的序号应不小于系统原有的脚本的序号,在这里是S99local,因此可以设置我们的脚本为S99myscript(允许有多个脚本采用同样的序号),只是注意要把这个脚本的属性和所有者等信息设置为与其他脚本相同。

3. 更改系统的登录画面
通常情况下,登录画面保存在/etc目录下的issue文件,如下:
#more /etc/issue
Red Hat Linux release 6.2(Zoot)
Kernel 2.2.14-5.0 on an i686
可以用vi等任何一种文本编辑器编辑issue文件成为我们想要的形式。那么,下一次启动的时候,系统便会读取issue文件作为登录画面吗?
实际上,光改动issue文件是不行的,还必须修改相应的控制文件。对issue文件的控制文件在前面提到过的/etc/rc.d中的rc.local脚本中。我们来看rc.local的最后一部分语句吧:
#more /etc/rc.d/rc.local
...
#This will overwrite /etc/issue at every boot. So, make any changes you
#want to make to /etc/issue here or you will lose them when you reboot.
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论