您的位置:首页 > 运维架构 > Linux

linux下将某个应用(软件)配置成系统服务

2010-03-25 14:32 627 查看
linux下将某个应用(软件)配置成系统服务

       linux有许多默认的系统服务,例如apache、sendmail、crond等都是其中之一,我们可以通过ntsysv等方法手动选择那些服务随着系统启动而启动,如图所示:

#ntsysv



       那是否可以将我们自行安装的应用(软件)配置成类似于httpd能自由控制是否系统启动/关闭的服务呢?答案是肯定的。

       下面将会以一个极度冷门的软件crowd为例,任何发行版linux都不能将其纳入缺省的系统服务。通过配置将该软件作为系统服务,可以方便地控制crowd是否随系统一起启动,其他软件配置起来大同小异,参照这个过程修改一下相关的项就可以了。
(注.其实单点登录工具crowd在国外有点知名度~只是国内用户很少接触而已,呵呵~并非忽略了它,抱歉抱歉!)

配置步骤:
一、编写相关软件的启动脚本
二、将编写好的脚本正确放置到相对应系统目录、并更改脚本文件的属性
三、将相关软件的启动脚本添加到linux系统的启动服务,并设置运行级别

一、编写相关软件的启动脚本

下面开始编写crowd的启动脚本,在linux任意目录下新建一个空白文件作为crowd(最好能取一个一看就知道是什么软件的名称)的启动脚本,本来这个shell脚本是要手工编写的,但由于这类启动脚本的格式固定,网上也很容易找到这类现成的脚本,所以随便下载一个直接修改部分内容就可以了,省去不少学习脚本编写的时间。

#vi crowd
创建crowd的启动脚本文件,复制下文两行#号所包含的内容到该文件并修改部分内容,完成后保存退出

启动脚本具体的格式如下:(两行#号所包含的内容)

###########################################

#!/bin/bash
#
# Startup script for the crowd server     启动脚本描述,随便即可
#
# chkconfig: - 85 15     系统引导时的序列号,默认即可
# description: crowd server      启动脚本描述,随便即可
# processname: crowd     工程名,随便即可,最好写启动脚本名
# pidfile: /var/run/crowd.pid      按默认路径填写crowd的pid位置
# crowd_home: /usr/local/atlassian/atlassian-crowd-1.6.1     正确填写crowd的文件目录
# Source function library.     默认即可
. /etc/rc.d/init.d/functions

prog=atlassian-crowd-1.6.1     项目名称,最好正确填写
pidfile=${PIDFILE-/var/run/crowd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/crowd}     按默认路径填写crowd的lockfile位置
export JAVA_HOME=/usr/java/jdk1.6.0/     系统引导时显示jdk的路径,这一项属于可有可无
CROWD_HOME=/usr/local/atlassian/atlassian-crowd-1.6.1    定义路径变量,正确填写软件所在目录,十分重要
START_CROWD="$CROWD_HOME/start_crowd.sh"    定义启动变量,填写启动crowd的脚本文件(即我们平时是通过./start_crowd.sh来启动crowd),十分重要,系统启动时就是通过执行这个文件来启动相关软件
STOP_CROWD="$CROWD_HOME/apache-tomcat/bin/shutdown.sh"     定义关闭变量,填写关闭crowd的脚本文件(即我们平时是通过./shutdown.sh来启动crowd),十分重要,系统关闭时就是通过执行这个文件来关闭相关软件

start() {
        echo -n $"Starting $prog: "
        cd $CROWD_HOME     正确填写软件路径的变量,上文已定义
        daemon $START_CROWD     正确填写启动变量,上文已定义
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}
stop() {
    echo -n $"Stopping $prog: "
    cd $CROWD_HOME     正确填写软件路径的变量,上文已定义
    daemon $STOP_CROWD     正确填写关闭变量,上文已定义
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo $"Usage: $prog {start|stop|restart}"
    exit 1
esac

exit $RETVAL

###########################################

以上为在我本机上(REDHAT AS4U5)对软件crowd启动脚本的设置,只要把上面的内容复制一份,修改部分地方就直接可以用了(需修改的地方上文中有标示)。

二、将编写好的脚本正确放置到相对应系统目录、并更改脚本文件的属性

#mv crowd /etc/init.d/
将编写好的脚本文件移至init.d目录
#chmod 777 crowd
修改启动脚本的文件属性

三、将相关软件的启动脚本添加到linux系统的启动服务,并设置运行级别

通过linux的chkconfig工具将crowd设置为系统服务,下面顺便介绍一下chkconfig的常用方法:

#chkconfig --list
查看系统所有的服务启动情况

#chkconfig --list httpd
查看单个服务启动情况

#chkconfig --add crowd
将crowd添加到启动服务列表

#chkconfig --level 235 crowd on
设置crowd的运行等级

#chkconfig --del crowd
从启动服务列表中删除一个启动服务

稍微解释一下启动等级:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

#service crowd start/restart/stop/status
经过上面的设置我们可以很方便的对crowd服务进行一系列的操作,如图所示crowd已经成为系统的启动服务,其他应用(软件)的设置换汤不换药,只要按照这个步骤做下来都能成功!



本文出自 “精诚所至 金石为开” 博客,请务必保留此出处http://yaksayoo.blog.51cto.com/510938/150011

本文出自 51CTO.COM技术博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息