/etc/rc.d/init.d/ -
包含开始 和 停止 脚本 (其他分类: /etc/init.d/)
/etc/rc.(x)/ -
包含用S或者K前缀的开始和停止脚本链接(启动或者杀死)
对于各种不同层次的系统用户有各种不同的运行级别。
- rc1.d – 单用户模式
- rc2.d – 启用网络的单用户模式
- rc3.d – 多用户模式-用文本模式启动
- rc4.d – 未定义
- rc5.d – 多用户模式 – 用X 窗口启动
- rc6.d – 关闭
现在我们开始工作:
创建jboss用户和安装jboss就不再这里多说了,上一篇文章已经讲过。
创建一个脚本叫 /etc/rc.d/init.d/jboss
创建一个链接叫 /etc/rc3.d/S84jboss
可选的方式 /etc/rc5.d/S84jboss
和/etc/rc4.d/S84jboss
创建一个链接叫 /etc/rc6.d/K15jboss
在/etc/rc1.d, /etc/rc2.d, /etc/rc0.d 上创建K15链接
需要注意的是:确保$JBOSS_HOME 目录能被”jboss”用户读写。如果有问题,可以点击查看 JBoss应用服务器推荐UNIX文件系统许可。
创建脚本jboss:
JBoss 4.0.1+版本, 在bin 目录配备
prebaked init 脚本,
jboss_init_redhat.sh 和
jboss_init_suse.sh. 你可以复制这些脚本中的一个到
/etc/rc.d/init.d/jboss,
由于我用的是redhat,所以复制jboss_init_redhat.sh,并修改它为可执行。
[root@vm2 ~]# cp $JBOSS_HOME/bin/jboss_init_redhat.sh
/etc/rc.d/init.d/jboss
[root@vm2 ~]# chmod 755 /etc/rc.d/init.d/jboss
其中,$JBOSS_HOME在你操作的时候不能这样写,它代表的是你的jboss安装的目录,到时你需要替换掉它。
然后使用vi编辑器编辑它,替换的都是红色的地方:
#!/bin/sh
#
# $Id: jboss_init_redhat.sh 46554 2006-07-28 10:29:13Z dimitris $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself.
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.
#换成你本机jboss的安装目录
JBOSS_HOME=${JBOSS_HOME:-"/home/jboss/jboss-4.0.5.GA"}
#换成你新建的jboss用户
JBOSS_USER=${JBOSS_USER:-"jboss"}
#换成本地java路径
JAVAPTH=${JAVAPTH:-"/home/jboss/jdk1.5.0_14/bin"}
#启动的配置参数,有3个值: 'minimal', 'default', 'all',all是集群模式的配置
JBOSS_CONF=${JBOSS_CONF:-"default"}
#这里是绑定所有的网卡,如果绑一个,就写你的IP地址。只在jboss4.2.0+的版本对外使用时才使用。
#JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}
#默认的关闭脚本,好像不太好用,我就没用
#JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}
#
# $Id: jboss_init_redhat.sh 46554 2006-07-28 10:29:13Z dimitris $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself.
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.
#换成你本机jboss的安装目录
JBOSS_HOME=${JBOSS_HOME:-"/home/jboss/jboss-4.0.5.GA"}
#换成你新建的jboss用户
JBOSS_USER=${JBOSS_USER:-"jboss"}
#换成本地java路径
JAVAPTH=${JAVAPTH:-"/home/jboss/jdk1.5.0_14/bin"}
#启动的配置参数,有3个值: 'minimal', 'default', 'all',all是集群模式的配置
JBOSS_CONF=${JBOSS_CONF:-"default"}
#这里是绑定所有的网卡,如果绑一个,就写你的IP地址。只在jboss4.2.0+的版本对外使用时才使用。
#JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}
#默认的关闭脚本,好像不太好用,我就没用
#JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}
#jboss4.2.0+版本对外服务绑定Ip的时候的关闭脚本
#JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.sh -S -s $JBOSS_HOST"}
#jboss关闭脚本
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.sh -S"}
#这是jboss4.2.0+版本对外服务时的启动
#JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF -b $JBOSS_HOST"}
#jboss启动
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF"}
if [ "$JBOSS_USER" = "RUNASIS" ]; then
SUBIT=""
else
SUBIT="su - $JBOSS_USER -c "
fi
if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
# ensure the file exists
touch $JBOSS_CONSOLE
if [ ! -z "$SUBIT" ]; then
chown $JBOSS_USER $JBOSS_CONSOLE
fi
fi
if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE"
#自启动日志
# echo "WARNING: ignoring it and using
/dev/null"
echo "WARNING: ignoring it and using $JBOSS_HOME/jbossAutoStart.log"
#自启动日志
echo "WARNING: ignoring it and using $JBOSS_HOME/jbossAutoStart.log"
#自启动日志
#JBOSS_CONSOLE="/dev/null"
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"}
fi
#自启动日志
#JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"}
JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"}
fi
#自启动日志
#JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"}
JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
#这个是默认的,跟上面的一样,不太好用
#JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown -S"}
#JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown -S"}
#我自己用的关闭方式
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"cd $JBOSS_HOME/bin; $JBOSSCP"}
if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
export PATH=$PATH:$JAVAPTH
fi
if [ ! -d "$JBOSS_HOME" ]; then
echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
exit 1
fi
#这是默认的控制台打印启动脚本命令,很不爽,就关了
#echo JBOSS_CMD_START = $JBOSS_CMD_START
case "$1" in
start)
echo "JBoss start.........."
cd $JBOSS_HOME/bin
if [ -z "$SUBIT" ]; then
eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
else
$SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &"
fi
;;
stop)
echo "JBoss stop........."
if [ -z "$SUBIT" ]; then
$JBOSS_CMD_STOP
else
$SUBIT "$JBOSS_CMD_STOP"
fi
;;
restart)
echo "JBoss restart........"
$0 stop
sleep 60
$0 start
;;
*)
echo "usage: $0 (start|stop|restart|help)"
esac
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"cd $JBOSS_HOME/bin; $JBOSSCP"}
if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
export PATH=$PATH:$JAVAPTH
fi
if [ ! -d "$JBOSS_HOME" ]; then
echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
exit 1
fi
#这是默认的控制台打印启动脚本命令,很不爽,就关了
#echo JBOSS_CMD_START = $JBOSS_CMD_START
case "$1" in
start)
echo "JBoss start.........."
cd $JBOSS_HOME/bin
if [ -z "$SUBIT" ]; then
eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
else
$SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &"
fi
;;
stop)
echo "JBoss stop........."
if [ -z "$SUBIT" ]; then
$JBOSS_CMD_STOP
else
$SUBIT "$JBOSS_CMD_STOP"
fi
;;
restart)
echo "JBoss restart........"
$0 stop
sleep 60
$0 start
;;
*)
echo "usage: $0 (start|stop|restart|help)"
esac
这些脚本能传送日志到
/dev/null, 但是我们还是想得到输入日志,以便我们来处理运行中的错误。所以我们要创建一个真实的文件:
[root@vm2
~]# mkdir $JBOSS_HOME/jbossAutoStart.log
[root@vm2 ~]# chown -R jboss.jboss $JBOSS_HOME/jbossAutoStart.log
[root@vm2 ~]# chown -R jboss.jboss $JBOSS_HOME/jbossAutoStart.log
创建链接:
[root@vm2
~]# ln -s /etc/rc.d/init.d/jboss /etc/rc3.d/S84jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc4.d/S84jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc5.d/S84jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc0.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc1.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc2.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc6.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc4.d/S84jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc5.d/S84jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc0.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc1.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc2.d/K15jboss
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc6.d/K15jboss
当你在Linux中将执行"service jboss
start"命令是,就对应"S" 链接 和 "service jboss stop"命令是
对于 K 链接。
到此,完成。你可是试试,看是不是能随着linux启动而启动了?中途也可以使用service的命令来关闭和启动?
还有一种方法就是利用Java
Service Wrapper,相关操作请查看http://wrapper.tanukisoftware.org/,有兴趣的朋友可以去看看!