linux启动项的设置

来源:互联网 发布:淘宝上架宝贝图片尺寸 编辑:程序博客网 时间:2024/06/06 03:16

查看:chkconfig --list

增加:chkconfig –add mysqld start

增加开机启动服务:chkconfig  服务名 on

Chkconfig –add httpd start

Chkconfig –level 5 httpd on

Chkconfig –level 5 iptables off

Chkconfig –level 5 mysqld off

/etc/rc.d/init
Linux 启动时,运行一个叫做init 的程序,然后由它来启动后面的任务,包括多用户环
境,网络等。
那么,到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别
。这个级别从1 到6 ,
具有不同的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的
主要文件,最先运行
的服务是那些放在/etc/rc.d 目录下的文件。
大多数的Linux 发行版本中,启动脚本位于 /etc/rc.d/init.d。这些脚本
被ln 命令来连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)
例如/etc/rc.d/rc2.d 下面的S10network 就是连接到/etc/rc.d/init.d下的network 脚
本的。
因此,我们可以知道,rc2.d 下面的文件就是和运行级2 有关的。
文件开头的S 代表start 就是启动服务的意思,后面的数字10 就是启动的顺序。例如,
在同一个目录下,
你还可以看到 S80postfix 这个文件,80 就是顺序在 10 以后,因为没有启动网络的情
况下,启动postfix
是没有任何作用的。
再看一下 /etc/rc.d/rc3.d,可以看到文件S60nfslock,但是这个文件不存在于 /etc/
rc.d/rc2.d 目录下。
NFS 要用到这个文件,一般用在多用户环境下,所以放在rc3.d 目录下。
另外,在/etc/rc.d/rc2.d 还可以看到那些K 开头的文件,例如
/etc/rc.d/rc2.d/K45named ,K 代表 kill 。
标准的Linux运行级为3 或者5 ,如果是3 的话,系统就在多用户状态。如果是5的话,
则是运行着X Window
系统。如果目前正在3或5,而你把运行级降低到2的话,init 就会执行 K45named 脚本

不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
# 缺省的运行级,RHS 用到的级别如下:
# 0 - 停机(千万不要把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
#
对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了ro
ot 口令,那么可以
让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:
init=/bin/sh rw
就可以使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,
让你使用passwd 程序
来改变root口令,然后启动到一个新的运行级。

2008年03月10日 星期一 18:49

理解:
当系统启动时,首先启动内核,内核调用init来完成引导进程。
init启动时,它会在/etc/inittab内查找默认的运行级别:如id : 2 : initdefault :
运行 /etc/rc.d/init.d中运行级别为2的启动脚本。由于init.d中的运行级别的这些脚本都用ln 命令连接到 /etc/rc.d/rcn.d 目录。例如/etc/rc.d/rc2.d/S10network对应/etc/rc.d/init.d下的network 脚本的。因此运行/etc/rc.d/rc2.d下的脚本。

如/etc/rc.d/rc2.d/S10network或/etc/rc.d/rc2.d/K45named等,则在第10个启动network,在第45个终止named


init详解

1、什么是init进程
init进程,是一个由内核启动的用户级进程,内核自行启动后,就通过启动init来完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)


2、文件位置
/sbin/init。如果内核找不到init,它就会试着运行/bin/sh


3、运行级别

  运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。

  # 0 - 停机(千万不能把initdefault 设置为0 )
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 (xwindow)
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )


1)、运行级别的配置是在/etc/inittab 文件里配置的。最先运行的服务是/etc/rc.d 下的文件。启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6) 运行级别的配置

  如下所示:
  12 : 2 : wait : /etc/init.d/rc2
  12:是一个任意指定的标签;
  2:表示这一行适用于运行那个级别(这里是2);
  wait:进入运行级别时,init应该等待第四个字段内的命令结束。
  /etc/init.d/rc2:Linux版本的不同,采用的具体命令也不同,运行级别的配置也有差别。


2)、init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别:
  id : 2 : initdefault :


3)、rcn.d与inittab的关系

rcn.d目录和运行级别n相关。/ect/rc.d/rcn.d是用ln命令和/etc/rc.d/init.d中的脚本关联的,例如:
rc2.d 目录下面的文件就是和运行级别2 相关的。

/etc/rc.d/rc2.d/S10network对应/etc/rc.d/init.d下的network 脚本的
文件开头的S 代表start 就是启动服务的意思,后面的数字10 就是启动的顺序

/etc/rc.d/rc2.d/S80postfix,80 就是顺序在10 以后,因为没有启动网络的情况下,启动postfix是没有任何作用的
/etc/rc.d/rc3.d/S60nfslock,NFS 要用到这个文件,一般用在多用户环境下,所以放在rc3.d 目录下

/etc/rc.d/rc2.d/K45named ,K 代表 kill

标准的Linux运行级为3 或者5 ,如果是3 的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init 就会执行 K45named 脚本。

不同的运行级有不同的用处,例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:init=/bin/sh rw
就可以使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证, 让你使用passwd 程序来改变root口令,然后启动到一个新的运行级。


4、/etc/inittab中的特殊配置

  /etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:

  1. powerwait
  允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源已被切断的软件。

  2. ctrlaltdel
  允许init在用户于控制台键盘上按下C t r l A l t D e l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C t r l A l t D e l组合键配置为别的行为,比如忽略等。

3. sysinit
  系统启动时准备运行的命令。比如说,这个命令将清除/tmp。
  其他的关键字及其使用详情,可参考inittab手册页。


运行级别补充

1、确定当前的运行级别

本章不是针对系统管理员的,但是作为s h e l l编程者,应当了解r c . s c r i p t s是什么,它们是被怎样放置到运行级别配置目录中的。顺便说一下,如果想知道当前的运行级别,可以用下面的命令:
who -r

在‘run level’后面的数字就是当前的运行级别。后面的时间是系统最近一次重启动的时间。
如果是L I N U X系统,那么

$ runlevel
2 3
第一列表示系统的前一个运行级别,第二列表示系统当前的运行级别,在这里是3。

2、inittab
i n i t t a b文件所包含的域具有严格的格式。该文件中每个条目的格式为:
i d : r s t a r t : a c t i o n : p r o c e s s
其中,i d域是相应进程的唯一标识。
r s t a r t域所包含的数字表示运行该进程的级别。
a c t i o n域告诉i n i t进程如何对待p r o c e s s所对应的进程。这里可以有很多种动作,但是最常见的是w a i t和r e s p a w n。w a i t意味着当进程启动后等待它结束。r e s p a w n则意味着如果该进程不
存在,则启动相应的进程,如果它存在,那么只要它一掉下来就立即重新启动它。
p r o c e s s域包含了实际要运行的命令。

该文件的第一行是系统缺省的运行级别,这里是级别3,一般都是这样。
以数字1 0到1 6开始的行启动或停止该运行级别所对应的全部运行级别脚本。例如,该文件中有这样一行:
15:5:wait:/etc/rc.d/rc 5
它的意思是,在运行级别5应该以参数5执行脚本/ e t c / r c . d / r c,即/ e t c / r c . d / r c执行/ e t c / r c . d / r c 5 . d
目录中的所有脚本。
在上述文件的最后一行,在运行级别2、3、4和5,该进程将会始终存在,即使暂时掉下来,大概也不会超过1 s。这一始终存在的进程是串口t t y S 1上的m i n g e t t y。该命令含有一个参数,即终端类型为v t 1 0 0。

3、运行级别脚本的格式
r c N . d目录中的脚本都是一些链接,这样是为了省去不必要的副本。这些链接的格式为:
S n n n . s c r i p t _ n a m e
K n n n . s c r i p t _ n a m e
其中,
S:代表启动相应的进程
K:代表杀死相应的进程
n n:是0 0至9 9的两位数字,不过在有些系统中是0 0 0至9 9 9三位数字。在不同目录中的链接应采用同一数字。例如,如果某个服务在r c 3 . d中启动时名为S 4 5 . m y s c r i p t,那么如果希望它
在r c 2 . d中启动,应当使用链接名S 4 5 . m y s c r i p t。
s c r i p t _ n a m e:相应脚本的文件名,根据所在操作系统的不同,它们可能位于下列目录中:
/ u s r / s b i n / i n i t . d
/ e t c / r c . d
/ e t c / i n i t . d
当i n i t 进程调用相应的运行级别脚本时,杀进程按照从高到低的K序号进行,即
K23,myscript K12.named;而启动进程按照从低到高的序号进行。如果使用的是L I N U X系统,K序号将按照从高到低的顺序执行。


安装运行脚本


1、安装运行级别脚本
如果想要安装自己的运行级别脚本,必须:
? 编写该脚本,确保它符合调用标准。
? 确信它能够启动或终止相应的服务。
? 将该脚本放置于(取决于操作系统) / e t c / i n i t . d或/ u s r / s b i n / i n i t . d或/ e t c / r c . d中。
? 在相应的r c N . d目录中按照合理的命名方式创建链接。
下面的脚本能够启动或停止一个名为r c . a u d i t的审核应用程序。该服务运行于级别3、5、4,停止于级别6、2、1。通过查看r c N . d中的条目,我们发现序号3 5空闲,于是就使用该序号。
实际上,系统并不对使用已占用的序号作任何检查。

让我们假定该脚本已经通过了测试。它能够正确地启动和停止审核服务。现在我们把该脚本放置在相应的运行级别目录中。
在本系统中,r c N . d目录位于/ e t c / r c . d目录下,而我的运行级别脚本保存在/ e t c / r c . d / i n i t . d目录下。如果系统目录结构与上面的不同,那么需要对下面的命令作相应的调整。
我们首先启动该脚本—记住启动脚本所使用的链接名是以S打头的。

$pwd
/etc/rc.d/rc3.d
$ln -s ../init.d/rc.audit S35rc.audit

$ls -l
....
lrwxrwxrws 1 root root .....S35rc.audit -> ../init.d/rc.audit
.......
我们已经创建了相应的链接。ls -l命令的结果显示该链接指向/ e t c / i n i t . d / r c . a u d i t文件。现在只要进入其他的相关目录( r c 4 . d
和r c 5 . d )使用同样的命令就可以启动其他相应的服务。
如果希望停止某个脚本的运行,可以使用如下命令:
$pwd
/etc/rc.d/rc6.d
$ln -s ../init.d/rc.audit K35rc.audit
$ls -l
...
lrwxrwxrwx 1 root root ... K35rc.audit -> ../init.d/rc.audit
...

在其他相关目录中,也可以如法炮制,停止相应的审核服务。现在当系统重启动时(运行级别6 ),它将被停止;在运行级别切换到2或1时也是如此。该服务在运行级别4或5中同样也会被启动。

2、使用inittab来启动应用程序

我们还可以用其他的方法来启动应用程序。可以通过在i n i t t a b文件中加入相应的条目来做到这一点。
系统运行在级别3时运行我的一个磁盘镜像检查脚本。
首先我确定该脚本能够正确运行,然后对i n i t t a b文件做备份。
$ cp /etc/initab /etc/inittab.bak
接下来编辑i n i t t a b文件,在该文件末尾加入这样一个条目:
rc.diskchecker:3:once:/usr/local/etc/rc.diskchecker > /dev/console 2>&1
保存并退出。
上面的一条意思是:
行首的r c . d i s k c h e c k e r是该进程在运行级别3中的唯一标识。该进程只运行一次。



原创粉丝点击