模仿/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,
<<No stacktrace available>>
Exception during runtime initialization
java.lang.ExceptionInInitializerError
<<No stacktrace available>>
Caused by: java.lang.NullPointerException
<<No stacktrace available>>
经过分析,原因无法加载到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 &
tail -f tomcat.log
再次运行启动脚本,正常启动