分类:
2011-07-06 11:31:30
使用service、chkconfig命令可以方便的管理服务,如何建立并注册到管理服务系统中去呢?
1. 建立脚本sample,并置于/etc/init.d目录中,下面给出脚本模板。其中,最新重要的是chkconfig配置。
linux启动级别分为0 - 6,每个级别的具体含义可参考/etc/inittab中的注释。
chkconfig指定了该服务在在哪一个界别启动。
如下配置中,标识服务器启动级别为2 3 4 5时则启动该服务。
#!/bin/bash
# # sample 服务描述 # chkconfig: 2345 30 80 # description: sample service # processname: sample # 引入公共函数,如status,这个是必须的操作 . /etc/init.d/functions RETVAL=0 # 进程名,service命令会查找该进程是否运行, # 从而确定sample服务的状态 # 这里我们为了演示,指定为init,具体可替换为自己的服务进程名 prog="init" script_name="$0" start() { } stop() { } restart() { } usage() { echo "$script_name (start|stop|restart|status)" } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status $prog RETVAL=$? ;; *) usage exit 1 ;; esac exit $RETVAL |
2. 添加服务
# chkconfig --add sample
chkconfig命令会从/etc/init.d目录中查找sample脚本,然后读取其中的配置,注册sample服务器
该命令会在/etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d目录中分别创建S30Nsample的符号连接, 并且在/etc/rc0.d /etc/rc1.d /etc/rc6.d目录中分别创建K80sample 符号连接:
lrwxrwxrwx 1 root root 20 07-05 17:21 S30sample -> ../init.d/sample lrwxrwxrwx 1 root root 20 07-05 17:21 K80sample -> ../init.d/sample |
S30sample含义:S 表示该脚本为启动脚本 30 表示启动级别 sample为脚本名称
执行该脚本相当于执行 /etc/init.d/sample start
K80sample含义:K 表示该脚本为停止脚本 80 表示脚本级别 sample为脚本名称
执行该脚本相当于执行 /etc/init.d/sample stop
这里稍微介绍一下linux系统启动的机制:
当linux在运行级别n启动时,会依次执行 /etc/rcn.d目录中所有S开头的脚本,并且依照S后面数字从小到大依次执行。
当启动级别为n的linux重启时(运行级别切换到6),会执行/etc/rc6.d目录中所有K开头的脚本,并且依照S后面数字从大到小依次执行。
当启动级别为n的linux停止时(运行级别切换到0),会执行/etc/rc0.d目录中所有K开头的脚本,并且依照S后面数字从大到小依次执行。
因此,当linux系统启动(处于1、2 、3、4 、5级别)时,S30sample脚本会被执行,即启动服务
当linux系统关闭(处于0、6级别)时,K80sample脚本会被执行,及关闭服务
3. 查看服务配置
# chkconfig --list sample sample 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 |
如果sample脚本中指定的配置一样,2 3 4 5为启动状态。
修改服务在不同系统运行级别时的状态,会影响在/etc/rc*.d目录中的符号连接,从而影响系统在不同级别切换行服务的运行情况。
4. 修改服务配置
只在2 4 级别启动
# chkconfig --level 35 sample off sample 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:关闭 6:关闭 |
在3 4级别设置为启动
# chkconfig --level 35 sample on sample 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 |
具体用法参考man chkconfig
5. 启动、停止服务
chkconfig仅仅是修改配置,配置在下一次启动后才生效,如果要马上生效,可以使用service命令随时启动、停止服务,查询服务状态。
service 服务名(及/etc/init.d/中的脚本名) 脚本命令
启动服务 server sample start 相当于执行/etc/init.d/sample start
关闭服务 server sample stop 相当于执行/etc/init.d/sample stop
重启服务 server sample restart 相当于执行/etc/init.d/sample restart
查询状态 server sample status 相当于执行/etc/init.d/sample status
一般来说,/etc/init.d中的脚本都必须支持start stop restart status命令
当然可以自定义其他命令,使用service命令来管理服务。