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已经成为系统的启动服务,其他应用(软件)的设置换汤不换药,只要按照这个步骤做下来都能成功!