Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25820
  • 博文数量: 23
  • 博客积分: 530
  • 博客等级: 中士
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 03:56
文章分类

全部博文(23)

文章存档

2008年(23)

我的朋友
最近访客

分类: LINUX

2008-04-15 11:30:13

Redhat 9的启动过程与其他的Unix操作系统的启动过程基本类似,都是经过了以下几个阶段。
1、主机启动并进行硬件自检后,读取硬盘MBR中的启动引导器程序,并进行加载。
2、启动引导器程序负责引导硬盘中的操作系统,根据用户在启动菜单中选择的启动项不同,可以引导不同的操作系统启动。对于Linux操作系统,启动引导器直接加载Linux内核 程序 。
3、Linux的内核 程序负责操作系统启动的前期工作,并进一步加载系统的INIT进程。
4、INIT进程是Linux系统中运行的第一个进程,该进程将根据其配置文件执行相应的启动程序,并进入指定的系统运行级别。
5、在不同的运行级别中,根据系统的设置将启动相应的服务程序。
6、在启动过程的最后,将运行控制台程序提示并允许用户输入用户帐号和口令进行登录。
Redhat9默认安装的是GRUB启动引导器,在此只对GRUB配置文件中的对Linux内核引导设置进行简单说明
程序代码: [ 复制代码到剪贴板 ] 


[root@LinuxSir network-scripts]# more /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
    kernel /vmlinuz-2.4.20-8 ro root=LABEL=/   
    initrd /initrd-2.4.20-8.img
//Linux的内核引导文件在目录“/boot”中

2、INIT进程
INIT进程是由Linux内核引导运行的,是系统中运行的第一个进程,其进程号(PID)永远为“1“,INIT进程运行后将按照其配置文件,引导运行系统所需要的其他进程,INIT进程将做为这些进程的父进程。
//查看系统中的进程

程序代码: [ 复制代码到剪贴板 ] 
[root@LinuxSir network-scripts]# ps -ef|head
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:57 ?        00:00:04 init
root         2     1  0 09:57 ?        00:00:00 [keventd]
root         3     1  0 09:57 ?        00:00:00 [kapmd]
root         4     1  0 09:57 ?        00:00:00 [ksoftirqd_CPU0]
root         9     1  0 09:57 ?        00:00:00 [bdflush]
root         5     1  0 09:57 ?        00:00:00 [kswapd]
root         6     1  0 09:57 ?        00:00:00 [kscand/DMA]
root         7     1  0 09:57 ?        00:00:00 [kscand/Normal]
root         8     1  0 09:57 ?        00:00:00 [kscand/HighMem]



注:init的配置文件为inittab,配置文件的全路径名为"/etc/inittab",在UNIX系统中通常有0--7个运行级别,分别为
0     停机,不要把系统默认运行级别设置为0,否则系统将不能正常启动
1     单用户模式,用于root用户对系统进行维护,不允许其他用户使用主机
2     多用户模式,在该模式下不能使用NFS
3     完全多用户模式,主机作为服务器时通常在该模式下
4     未分配使用
5     图形登录的多用户模式,用户在该模式下可进行图形登录界面
6     重新启动,不要把系统默认运行级别设置为6,否则系统将不能正常启动

1、runlevel命令
命令格式
runlevel
功能描述
runlevel命令用于显示系统当前的和上一次的运行级别,如系统中不存在上一次的运行级别用”N”代替。
应该实例

程序代码: [ 复制代码到剪贴板 ] 
#runlevel
N 3
//系统当前的运行级别为“3”,没有上一次运行级别(用“N”表示)


2、使用init命令转换运行级别
命令格式
init 0123456
功能描述
init命令后面跟相应的运行级别作为参数,可以从当前的运行级别转换为其他运行级别
应该实例

程序代码: [ 复制代码到剪贴板 ] 
//显示系统当前运行级别
#runlevel
N 3
#init 2
//执行"init 2"命令后会在系统控制台中显示相应的停止启动服务信息
#runlevel
3 2
//当前系统级别已经为“2”,上一次运行的级别为“3”,转换运行成功


Linux中的服务程序有两种,独立运行的服务程序和受xinetd管理的服务程序,而xinetd也是作为系统中一个独立的服务程序而运行的~
所有的服务器启动脚本都放在目录/etc/rc.d/init.d/中,脚本名称与服务器名称相对应,服务器脚本中大多有简要的功能说明和使用方法。
程序代码: [ 复制代码到剪贴板 ] 
[root@LinuxSir network-scripts]# ls /etc/rc.d/rc3.d/
K05innd        K24irda       K36lisa       K50vsftpd   K74ypserv     S09isdn     S17keytable  S28autofs      S85gpm      S95atd
K05saslauthd   K25squid      K45named      K54pxe      K74ypxfrd     S10network  S20random    S55sshd        S90crond    S97rhnsd
K15httpd       K34yppasswdd  K50snmpd      K70aep1000  K95firstboot  S12syslog   S24pcmcia    S56rawdevices  S90cups     S99local
K15postgresql  K35smb        K50snmptrapd  K70bcm5820  S05kudzu      S13portmap  S25netfs     S56xinetd      S90xfs
K20nfs         K35winbind    K50tux        K74ntpd     S08iptables   S14nfslock  S26apmd      S80sendmail    S95anacron


用于启动服务的脚 本名格式为“Snn服务名称”,“S”是“Start”的缩写,代表启动服务,“nn”为两位数字序号用于确定同类脚本的执行顺序,当系统进入某运行级别时将按照序号从小到大的顺序执行脚本启动服务。
用于停止服务的脚本名格式为“Knn服务名称“,K是”Kill“的缩写,代表停止服务,”nn“为两位的数字序号,用于确定同类脚本的执行顺序。当系统进入某运行级别时将按照序号从小到大的顺序执行脚本停止服务。

3、使用服务脚本
在命令行中输入服务脚本的全路径名,后跟相应的动作可以对服务进行相应的操作
程序代码: [ 复制代码到剪贴板 ] 
//以xinetd服务为例,直接执行服务脚本将显示相应的帮助信息
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd
Usage: /etc/rc.d/init.d/xinetd {start|stop|status|restart|condrestart|reload}
//使用”status“动作查询服务状态
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd status
xinetd (pid 1709) is running...
//使用"restarts"命令重新启动服务
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]


4、使用service命令
命令格式
service 服务名称   要执行的动作
功能描述
用户无论在任何路径都可以使用service命令来对系统中的服务进行操作,service将自动到”/etc/rc.d/init.d/“目录中查找并执行相应的服务脚本。
应该实例

程序代码: [ 复制代码到剪贴板 ] 
#service xinetd stop  
Stopping xinetd:     [OK]
#service xinetd start
Starting  xinetd:      [OK]


xinetd的配置文件为”/etc/xindtd.conf“,xinetd的启动配置韦/etc/xinetd.d/.

ntsysv命令
#ntsysv
命令可以设置所有服务程序的启动选项,包括受xinetd服务管理的服务,但是ntsysv只能设置当前运行级别3服务的启动状态,如需对其他运行级别进行设置需要先转换到相应的运行级别然后再运行ntsysv程序

5、chkconfig
chkconfig命令的功能强大,可以设置系统中所有服务在各运行级别中的启动状态,当然也包括受xinetd服务管理的服务
1、查看服务启动状态
命令格式
chkconfig --list[服务名称]
功能描述
chkconfig --list命令用于查看系统中服务的启动状态,如不指定定任何参数则显示所有服务的启动状态,如指定服务名称则只显示该服务的启动状态。
2、设置独立服务的启动状态
命令格式
chkconfig --level <运行级别列表><服务名称>
功能描述
chkconfig 命令可以设置指定服务在指定运行级别中的启动状态
#chkconfig --level 24 syslog off
#chkconfig --list syslog
syslog      0:off     1:off     2off     3:on     4:off     5:on     6:off
//上面命令设置服务syslog在运行级别2和4中的启动状态为off。即不启动!

3、设置非独立服务的启动状态
命令格式
chkconfg<服务名称>
功能描述
由于非独立服务依赖于xinetd服务进行启动,所示不存在运行级别启动状态的问题,在使用chkconfig命令设置启动状态时也无须指定运行级别
应该实例
程序代码: [ 复制代码到剪贴板 ] 
#chkconfig --list rsync
rsync     off
#chkconfig rsync on
#chkconfig -

Redhat 9的启动过程与其他的Unix操作系统的启动过程基本类似,都是经过了以下几个阶段。
1、主机启动并进行硬件自检后,读取硬盘MBR中的启动引导器程序,并进行加载。
2、启动引导器程序负责引导硬盘中的操作系统,根据用户在启动菜单中选择的启动项不同,可以引导不同的操作系统启动。对于Linux操作系统,启动引导器直接加载Linux内核 程序 。
3、Linux的内核 程序负责操作系统启动的前期工作,并进一步加载系统的INIT进程。
4、INIT进程是Linux系统中运行的第一个进程,该进程将根据其配置文件执行相应的启动程序,并进入指定的系统运行级别。
5、在不同的运行级别中,根据系统的设置将启动相应的服务程序。
6、在启动过程的最后,将运行控制台程序提示并允许用户输入用户帐号和口令进行登录。
Redhat9默认安装的是GRUB启动引导器,在此只对GRUB配置文件中的对Linux内核引导设置进行简单说明
程序代码: [ 复制代码到剪贴板 ] 


[root@LinuxSir network-scripts]# more /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
    kernel /vmlinuz-2.4.20-8 ro root=LABEL=/   
    initrd /initrd-2.4.20-8.img
//Linux的内核引导文件在目录“/boot”中

2、INIT进程
INIT进程是由Linux内核引导运行的,是系统中运行的第一个进程,其进程号(PID)永远为“1“,INIT进程运行后将按照其配置文件,引导运行系统所需要的其他进程,INIT进程将做为这些进程的父进程。
//查看系统中的进程

程序代码: [ 复制代码到剪贴板 ] 
[root@LinuxSir network-scripts]# ps -ef|head
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:57 ?        00:00:04 init
root         2     1  0 09:57 ?        00:00:00 [keventd]
root         3     1  0 09:57 ?        00:00:00 [kapmd]
root         4     1  0 09:57 ?        00:00:00 [ksoftirqd_CPU0]
root         9     1  0 09:57 ?        00:00:00 [bdflush]
root         5     1  0 09:57 ?        00:00:00 [kswapd]
root         6     1  0 09:57 ?        00:00:00 [kscand/DMA]
root         7     1  0 09:57 ?        00:00:00 [kscand/Normal]
root         8     1  0 09:57 ?        00:00:00 [kscand/HighMem]



注:init的配置文件为inittab,配置文件的全路径名为"/etc/inittab",在UNIX系统中通常有0--7个运行级别,分别为
0     停机,不要把系统默认运行级别设置为0,否则系统将不能正常启动
1     单用户模式,用于root用户对系统进行维护,不允许其他用户使用主机
2     多用户模式,在该模式下不能使用NFS
3     完全多用户模式,主机作为服务器时通常在该模式下
4     未分配使用
5     图形登录的多用户模式,用户在该模式下可进行图形登录界面
6     重新启动,不要把系统默认运行级别设置为6,否则系统将不能正常启动

1、runlevel命令
命令格式
runlevel
功能描述
runlevel命令用于显示系统当前的和上一次的运行级别,如系统中不存在上一次的运行级别用”N”代替。
应该实例

程序代码: [ 复制代码到剪贴板 ] 
#runlevel
N 3
//系统当前的运行级别为“3”,没有上一次运行级别(用“N”表示)


2、使用init命令转换运行级别
命令格式
init 0123456
功能描述
init命令后面跟相应的运行级别作为参数,可以从当前的运行级别转换为其他运行级别
应该实例

程序代码: [ 复制代码到剪贴板 ] 
//显示系统当前运行级别
#runlevel
N 3
#init 2
//执行"init 2"命令后会在系统控制台中显示相应的停止启动服务信息
#runlevel
3 2
//当前系统级别已经为“2”,上一次运行的级别为“3”,转换运行成功


Linux中的服务程序有两种,独立运行的服务程序和受xinetd管理的服务程序,而xinetd也是作为系统中一个独立的服务程序而运行的~
所有的服务器启动脚本都放在目录/etc/rc.d/init.d/中,脚本名称与服务器名称相对应,服务器脚本中大多有简要的功能说明和使用方法。
程序代码: [ 复制代码到剪贴板 ] 
[root@LinuxSir network-scripts]# ls /etc/rc.d/rc3.d/
K05innd        K24irda       K36lisa       K50vsftpd   K74ypserv     S09isdn     S17keytable  S28autofs      S85gpm      S95atd
K05saslauthd   K25squid      K45named      K54pxe      K74ypxfrd     S10network  S20random    S55sshd        S90crond    S97rhnsd
K15httpd       K34yppasswdd  K50snmpd      K70aep1000  K95firstboot  S12syslog   S24pcmcia    S56rawdevices  S90cups     S99local
K15postgresql  K35smb        K50snmptrapd  K70bcm5820  S05kudzu      S13portmap  S25netfs     S56xinetd      S90xfs
K20nfs         K35winbind    K50tux        K74ntpd     S08iptables   S14nfslock  S26apmd      S80sendmail    S95anacron


用于启动服务的脚 本名格式为“Snn服务名称”,“S”是“Start”的缩写,代表启动服务,“nn”为两位数字序号用于确定同类脚本的执行顺序,当系统进入某运行级别时将按照序号从小到大的顺序执行脚本启动服务。
用于停止服务的脚本名格式为“Knn服务名称“,K是”Kill“的缩写,代表停止服务,”nn“为两位的数字序号,用于确定同类脚本的执行顺序。当系统进入某运行级别时将按照序号从小到大的顺序执行脚本停止服务。

3、使用服务脚本
在命令行中输入服务脚本的全路径名,后跟相应的动作可以对服务进行相应的操作
程序代码: [ 复制代码到剪贴板 ] 
//以xinetd服务为例,直接执行服务脚本将显示相应的帮助信息
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd
Usage: /etc/rc.d/init.d/xinetd {start|stop|status|restart|condrestart|reload}
//使用”status“动作查询服务状态
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd status
xinetd (pid 1709) is running...
//使用"restarts"命令重新启动服务
[root@LinuxSir network-scripts]# /etc/rc.d/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]


4、使用service命令
命令格式
service 服务名称   要执行的动作
功能描述
用户无论在任何路径都可以使用service命令来对系统中的服务进行操作,service将自动到”/etc/rc.d/init.d/“目录中查找并执行相应的服务脚本。
应该实例

程序代码: [ 复制代码到剪贴板 ] 
#service xinetd stop  
Stopping xinetd:     [OK]
#service xinetd start
Starting  xinetd:      [OK]


xinetd的配置文件为”/etc/xindtd.conf“,xinetd的启动配置韦/etc/xinetd.d/.

ntsysv命令
#ntsysv
命令可以设置所有服务程序的启动选项,包括受xinetd服务管理的服务,但是ntsysv只能设置当前运行级别3服务的启动状态,如需对其他运行级别进行设置需要先转换到相应的运行级别然后再运行ntsysv程序

5、chkconfig
chkconfig命令的功能强大,可以设置系统中所有服务在各运行级别中的启动状态,当然也包括受xinetd服务管理的服务
1、查看服务启动状态
命令格式
chkconfig --list[服务名称]
功能描述
chkconfig --list命令用于查看系统中服务的启动状态,如不指定定任何参数则显示所有服务的启动状态,如指定服务名称则只显示该服务的启动状态。
2、设置独立服务的启动状态
命令格式
chkconfig --level <运行级别列表><服务名称>
功能描述
chkconfig 命令可以设置指定服务在指定运行级别中的启动状态
#chkconfig --level 24 syslog off
#chkconfig --list syslog
syslog      0:off     1:off     2off     3:on     4:off     5:on     6:off
//上面命令设置服务syslog在运行级别2和4中的启动状态为off。即不启动!

3、设置非独立服务的启动状态
命令格式
chkconfg<服务名称>
功能描述
由于非独立服务依赖于xinetd服务进行启动,所示不存在运行级别启动状态的问题,在使用chkconfig命令设置启动状态时也无须指定运行级别
应该实例
程序代码: [ 复制代码到剪贴板 ] 
#chkconfig --list rsync
rsync     off
#chkconfig rsync on
#chkconfig --list rsync
rsync     on


注:设置了服务在某运行级别的启动状态后在系统下一次进入后才会生效,如果需要系统当前的运行级别中改变服务的运行状态,需要运行相应的服务脚本。
对于非独立运行的服务由于其受到xinetd服务的管理,在改变了服务的启动状态后需要重新启动xinetd服务使设置生效。

程序代码: [ 复制代码到剪贴板 ] 
//改变服务的启动状态
#chkconfig rsync on
//重新启动xinetd服务
#service xinetd restart
Stopping     xinetd          [OK]
Starting      xinedt          [OK]
-list rsync
rsync     on


注:设置了服务在某运行级别的启动状态后在系统下一次进入后才会生效,如果需要系统当前的运行级别中改变服务的运行状态,需要运行相应的服务脚本。
对于非独立运行的服务由于其受到xinetd服务的管理,在改变了服务的启动状态后需要重新启动xinetd服务使设置生效。

程序代码: [ 复制代码到剪贴板 ] 
//改变服务的启动状态
#chkconfig rsync on
//重新启动xinetd服务
#service xinetd restart
Stopping     xinetd          [OK]
Starting      xinedt          [OK]

阅读(1096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~