模仿/etc/rc.d/init.d下的任意一个文件的内容,写一个新的文件,名字和你的servicename的名字一样,然后执行
chkconfig --add servicename
执行成功后,编辑servicename文件,
例如:
#!/bin/bash
# whoami
# root
# chkconfig: 345 51 49
# description: starts the jboss deamons
#
JBOSS_HOME=/usr/java/jboss
JBOSS_OWNER=root
case "$1" in
'start')
echo -n "Starting jboss: "
su - $JBOSS_OWNER -c "$JBOSS_HOME/bin/run.sh" &
touch /var/lock/subsys/jboss
echo
;;
'stop')
echo -n "shutting down jboss! "
su - $JBOSS_OWNER -c "kill -9 $(ps -ef | grep jboss | grep java | awk '{print $2}')"
rm -f /var/lock/subsys/jboss
echo
;;
'restart')
echo -n "restarting jboss: "
$0 stop
$0 start
echo
;;
*)
echo "usage: jboss { start | stop | restart }"
exit 1
esac
exit 0
错误一:
service myservice does not support chkconfig
我们一般在脚本开头加入下面两句就好了
添加下面两句到 #!/bin/bash 之后。
# chkconfig: 2345 10 90 # description: myservice ....
其中2345是默认启动级别,级别有0-6共7个级别。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
错误二:
用root用户直接运行脚本来启动jboss没有报任何的错误,当用普通用户来运行的时候,
出错如下:
WARNING: error instantiating 'org.apache.juli.ClassLoaderLogManager' referenced by java.util.logging.manager, class not found
java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager not found
<<No stacktrace available>>
WARNING: error instantiating '1catalina.org.apache.juli.FileHandler,' referenced by handlers, class not found
java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler,
Exception during runtime initialization
java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
经过分析,原因无法加载到java的环境变量,所以要修改启动脚本,添加上环境变量,修改后如下:
#!/bin/bash
#file_name:go.sh
JAVA_HOME=/usr/local/jdk1.6.0_11
export JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export PATH
nohup ./catalina.sh run> tomcat.log &