Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1952814
  • 博文数量: 261
  • 博客积分: 8073
  • 博客等级: 中将
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 15:23
文章分类

全部博文(261)

文章存档

2013年(1)

2012年(1)

2011年(50)

2010年(34)

2009年(4)

2008年(17)

2007年(55)

2006年(99)

分类:

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命令来管理服务。
阅读(1582) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~