CentOS LInux 启动关闭、服务管理
#chkconfig:3458515
#descrīption:Apache
第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15)。
保存后执行:chkconfig--addhttpd,成功添加。
在rc3.d、rc4.d、rc5.d路径中会出现S85httpd的链接文件,其他运行级别路径中会出现K61httpd的链接文件。
2、运行chkconfig --list,httpd在其中。CentOS启动顺序: 1.当我们按下电源按钮,把电源投入到机器中后,首先被启动执行的就是这个BIOS(BasicInput/Output System)程序。BIOS的功能是......并且访问硬盘先头512Bit的MBR(Master Boot Record)。 2.经BOIS的控制,将MBR中的BootRecord调入内存中。这里就要说说Linux的Boot程序了,Linux的Boot程序有GRUB和LILO,而CentOS默认的Boot程序是GRUB。 3.通过Boot程序,访问硬盘中的Linux内核程序。 4.将内核程序调入内存中。 5.内核程序调用完成后,通过内核访问硬盘中将要用到的其他文件。 内核第一个执行的文件是/sbin/init,而这个文件的设置和定义文件是/etc/inittab这个文件,也就是说/sbin/init按照/etc/inittab的定义来执行下一步的启动,那我们就要看看/etc/inittab文件是怎么回事儿了。[root@linux ~]# cat -n /etc/inittab
[root@linux ~]# 在以上的这个文件中,#开头的文件是注释文件,可以忽略不看,但是能够很好的帮我们了解文件。 这个文件中的定义形势如下: 通过下表的说明去看这个文件,就清晰明了的多了! <id>:<runlevel>:<action>:<process> | |||||||||||||
id | 不重复的任意数字 | ||||||||||||
runlevel | 0~6的启动级别(模式) | ||||||||||||
action |
| ||||||||||||
process | 定义被执行的命令 |
- 18行的定义是默认的启动级别是“3“文本模式。
- 21行的定义是启动的过程中执行/etc/rc.d/rc.sysinit文件(启动级别是空,也就是说无论什么级别都执行这个文件),这个文件很长有差不多1000行的内容,主要功能是启动网络,读取文件系统,使swap有效化和调入模块等动作。
- 26行的定义和上面的18行的定义是对应的,也就是说18行定义的启动级别是"X",那么就执行文件23到29行定义中的"X"。
这里18行定义的是启动级别3,就执行26行中启动级别3的定义,执行/etc/rc.d/rc脚本文件(控制文件),并将18行定义的启动级别以参数的形势交给/etc/rc.d/rc文件进行处理。这里我们看到“l3:3:wait:/etc/rc.d/rc 3”是把启动级别3交给文件rc处理,那我们有必要看看rc文件都定义了什么。/etc/rc.d/rc文件内容如下:
[root@linux ~]# cat -n /etc/rc.d/rc
1#!/bin/bash
2#
3#rcThisfileisresponsibleforstarting/stopping
4#serviceswhentherunlevelchanges.
5#
6#OriginalAuthor:
7#MiquelvanSmoorenburg,<[email protected]>
8#
9
10#checkafiletobeacorrectrunlevelscript
11check_runlevel()
12{
13#Checkifthefileexistsatall.
14[-x"$1"]||return1
15
16#Rejectbackupfilesandfilesgeneratedbyrpm.
17case"$1"in
18*.rpmsave|*.rpmorig|*.rpmnew|*~|*.orig)
19return1
20;;
21esac
22return0
23}
24
25#Nowfindoutwhatthecurrentandwhatthepreviousrunlevelare.
26argv1="$1"
27set`/sbin/runlevel`
28runlevel=$2
29previous=$1
30exportrunlevelprevious
31
32./etc/init.d/functions
33
34#Seeifwewanttobeinuserconfirmationmode
35if["$previous"="N"];then
36if[-f/var/run/confirm];then
37echo$"Enteringinteractivestartup"
38else
39echo$"Enteringnon-interactivestartup"
40fi
41fi
42
43#Getfirstargument.Setnewrunleveltothisargument.
44[-n"$argv1"]&&runlevel="$argv1"
45
46#Isthereanrcdirectoryforthisnewrunlevel?
47[-d/etc/rc$runlevel.d]||exit0
48
49#First,runtheKILLscripts.
50foriin/etc/rc$runlevel.d/K*;do
51check_runlevel"$i"||continue
52
53#Checkifthesubsystemisalreadyup.
54subsys=${i#/etc/rc$runlevel.d/K??}
55[-f/var/lock/subsys/$subsys-o-f/var/lock/subsys/$subsys.init]\
56||continue
57
58#Bringthesubsystemdown.
59ifegrep-q"(killproc|action)"$i;then
60$istop
61else
62action$"Stopping$subsys:"$istop
63fi
64done
65
66#NowruntheSTARTscripts.
67foriin/etc/rc$runlevel.d/S*;do
68check_runlevel"$i"||continue
69
70#Checkifthesubsystemisalreadyup.
71subsys=${i#/etc/rc$runlevel.d/S??}
72[-f/var/lock/subsys/$subsys-o-f/var/lock/subsys/$subsys.init]\
73&&continue
74
75#Ifwe'reinconfirmationmode,getuserconfirmation
76if[-f/var/run/confirm];then
77confirm$subsys
78test$?=1&&continue
79fi
80
81update_boot_stage"$subsys"
82#Bringthesubsystemup.
83if["$subsys"="halt"-o"$subsys"="reboot"];then
84exportLC_ALL=C
85exec$istart
86fi
87ifegrep-q"(daemon|action|success|failure)"$i2>/dev/null\
88||["$subsys"="single"-o"$subsys"="local"];then
89$istart
90else
91action$"Starting$subsys:"$istart
92fi
93done
94rm-f/var/run/confirm
95if[-x/usr/bin/rhgb-client]&&/usr/bin/rhgb-client--ping;then
96/usr/bin/rhgb-client--quit
97fi
[root@linux ~]#
在这个文件中我们看看如下的几行:
- 50行以K开头的脚本文件
- 60行执行stop
- 67行以S开头的脚本文件
- 91行执行start
在这个文件中,每个程序块的部分都有注释(#开头的行),如果有兴趣的话可以自行研究一下。似乎不是那么太难,就是check→do,确认后执行,判断后执行的样子。rc.d目录下面的文件:
[root@linux ~]# ls -l /etc/rc.d
总用量112
drwxr-xr-x2rootroot409612月2812:45init.d
-rwxr-xr-x1rootroot23522004-03-17rc
drwxr-xr-x2rootroot409612月2812:45rc0.d
drwxr-xr-x2rootroot409612月2812:45rc1.d
drwxr-xr-x2rootroot409612月2812:45rc2.d
drwxr-xr-x2rootroot409612月2812:45rc3.d
drwxr-xr-x2rootroot409612月2812:45rc4.d
drwxr-xr-x2rootroot409612月2812:45rc5.d
drwxr-xr-x2rootroot409612月2812:45rc6.d
-rwxr-xr-x1rootroot2202003-06-24rc.local
-rwxr-xr-x1rootroot275848月1317:10rc.sysinit
[root@linux ~]#
我们看到了,在这个目录下面,有刚才提到的rc文件,还有另外的一些文件,我们来简单说明一下。
1.init.d
这个不是文件,是一个目录,这个目录下面存放着各各服务的控制脚本,这下面的文件和你安装了些什么软件包有关系。如果你有兴趣你可以察看他们的脚本文件,接下来的说明中我们还会说到他,因为/etc/rc.d/rcX.d下的文件和这个init.d下面的文件是通过软连接相连的。
2.rc
这个文件我们上面提到过,跳过了。
3.rc.loca
这个文件也许会用到,如果你安装了一些软件或服务,并非系统标准的服务,比如手动的安装了Httpd,这样你用chkconfig命令是无法操作httpd的,开启服务器的时候也并不默认的启动这个httpd服务,这个时候你就可以将启动命令写到这个文件中,让开机启动服务完毕之后,最后启动这个httpd服务,注意是最后。这里说的httpd只是一个例子,将来也许会有很多的自己安装的服务会用到这个文件,知道一下,要用到的时候自然就明白。当然还有另外一种方法,就是自己写一个启动脚本文件,让系统开机时读取脚本文件来对httpd进行启动操作
4.rc.sysini
我们上面提到过这个文件,这个文件是在boot的时候就被执行的脚本,它的任务是初始化系统的网络,设定hostname,欢迎信息表示,时钟设置,挂载文件系统等。有兴趣可以读它的脚本文件。
5.rcX.d
这个rcX.d里面的X代表了0~6的数字(6种启动模式)。我们看到了它们都是目录,下面放着的都是我们上面说的/etc/rc.d/init.d下面文件的link。这里我们已rc3.d为例子,简单说明一下。
在察看这个文件的时候注意2点:
##第一:ls-l察看它们的详细信息,看看他们的link指向
##第二:ls-l察看它们的文件名的头字母,形式应该是这样的[S或K<数字><名称>]的形势。S代表启动,K代表停止。
不要迷糊,/etc/rc.d/rc就定义了这个文件名称头文字的“S”和“K”。也就是开机的时候,已S开头的脚本文件别执行,这个服务就被开机运行;那么已K开头的文件不被执行,这个文件所控制的服务也不被执行,这个文件控制的服务也不被开机运行。
这样看来,我们在给服务器左右化的时候,就可以直接的将相应的启动模式(rc0.d~rc6.d)下的相应服务控制脚本的文件名改掉(S改成K,K改成S),就能够简单的优化开机时系统将运行哪儿些个服务。
如果通过命令来控制的话,那命令是chkconfig命令.......编辑中......
如果你察看过rc0.d~rc6.d的目录下的文件名称,你会发现,他们以S开都得文件名数量是不同的。
/etc/rc.d/rc3.d下都有什么(一部分而已,你可以在自己的系统下面察看全部)[root@linux ~]# ls -l /etc/rc.d/rc3.d
合計224
lrwxrwxrwx1rootroot211月505:24K01tog-pegasus->../init.d/tog-pegasus
lrwxrwxrwx1rootroot131月505:12K01yum->../init.d/yum
lrwxrwxrwx1rootroot241月505:12K02NetworkManager->../init.d/NetworkManager
lrwxrwxrwx1rootroot151月505:12K03rhnsd->../init.d/rhnsd
lrwxrwxrwx1rootroot191月505:08K05saslauthd->../init.d/saslauthd
lrwxrwxrwx1rootroot161月505:11K10psacct->../init.d/psacct
lrwxrwxrwx1rootroot171月505:25K12FreeWnn->../init.d/FreeWnn
lrwxrwxrwx1rootroot131月505:12K20nfs->../init.d/nfs
lrwxrwxrwx1rootroot141月505:11K24irda->../init.d/irda
lrwxrwxrwx1rootroot161月505:10K50ibmasm->../init.d/ibmasm
lrwxrwxrwx1rootroot171月505:12K50netdump->../init.d/netdump
lrwxrwxrwx1rootroot161月505:26K73ypbind->../init.d/ypbind
[root@linux ~]#
接下来我们看看控制服务的一些工具
chkconfig
setup
system-config-services
我们分别来看看这3个工具(如果还有别的,告诉我)
chkconfig
这个工具我们很熟悉,并且在我们的网站配置祥解中也提到过他的使用。
执行权限:root
命令路径:/sbin/chkconfig
使用法:
chkconfig<服务名>on#这个和接下来的off这个其实就是把以K开头的脚本文件从命名
chkconfig<服务名>off#如果你有兴趣自己试验一下就知道了
chkconfig--list[服务名]
chkconfig--add<服务名>
chkconfig--del<服务名>
chkconfig[--level<启动级别>]<服务名><on|off|reset|resetpriorities>
setup
是系统综合的配置工具,命令行下也可以用。这个不多说,操作一下就知道怎么回事了。
system-config-services
如果你安装了gnome这样的窗口桌面系统,你也可以使用这个工具来体验下鼠标点击带来的方便。(如果你安装了桌面系统,可以#system-config加Tab键,会有很多工具的执行命令,体会下。)
主要服务参照:
http://www.centospub.com/bbs/viewthread.php?tid=1851&extra=page%3D1
以上是Linux系统(CentOS)的启动流程和服务管理相关的一点儿知识,如果有不足大家补充。非常感谢纠错的朋友们,感谢你们的支持。from:http://www.centospub.com/bbs/viewthread.php?tid=1295&highlight=
--End--