tomcat脚本:
原始脚本:
[root@devops01-web-53scripts]#catTomcat-init #!/bin/bash ###BEGININITINFO #Provides:tomcat #required-Start:$remote_fs$syslog #required-Stop:$remote_fs$syslog #Default-Start:2345 #Default-Stop:016 #Short-Description:tomcat-serverdaemon #Description:tomcat-serverdaemon ###ENDINITINFO # #chkconfig:-9515 #description:Tomcatstart/stop/statusscript #LocationofJAVA_HOME(binfiles) exportJAVA_HOME= #AddJavabinaryfilestoPATH exportPATH=$JAVA_HOME/bin:$PATH #CATALINA_HOMEisthelocationoftheconfigurationfilesofthisinstanceofTomcat CATALINA_HOME=/usr/local/tomcat #TOMCAT_USERisthedefaultuseroftomcat TOMCAT_USER=www #TOMCAT_USAGEisthemessageifthisscriptiscalledwithoutanyoptions TOMCAT_USAGE="Usage:$0{\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" #SHUTDOWN_WAITiswaittimeinsecondsforjavaproccesstostop SHUTDOWN_WAIT=20 tomcat_pid(){ echo`ps-ef|grep$CATALINA_HOME/|grep-vgrep|tr-s""|cut-d""-f2` } start(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;31mTomcatisalreadyrunning(pid:$pid)\e[00m" else echo-e"\e[00;32mStartingtomcat\e[00m" if[`user_exists$TOMCAT_USER`="1"];then su$TOMCAT_USER-c$CATALINA_HOME/bin/startup.sh else $CATALINA_HOME/bin/startup.sh fi status fi return0 } status(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;32mTomcatisrunningwithpid:$pid\e[00m" else echo-e"\e[00;31mTomcatisnotrunning\e[00m" fi } stop(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;31mStopingTomcat\e[00m" $CATALINA_HOME/bin/shutdown.sh letkwait=$SHUTDOWN_WAIT count=0; until[`ps-p$pid|grep-c$pid`='0']||[$count-gt$kwait] do echo-n-e"\e[00;31mwaitingforprocessestoexit\e[00m\n"; sleep1 letcount=$count+1; done if[$count-gt$kwait];then echo-n-e"\n\e[00;31mkillingprocesseswhichdidn'tstopafter$SHUTDOWN_WAITseconds\e[00m" kill-9$pid fi else echo-e"\e[00;31mTomcatisnotrunning\e[00m" fi return0 } user_exists(){ ifid-u$1>/dev/null2>&1;then echo"1" else echo"0" fi } case$1in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo-e$TOMCAT_USAGE ;; esac exit0 [root@devops01-web-53scripts]#
tomcat启动的时候看不出异常,关闭的时候回报错类似:
SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running.
[root@szxjdw01-web-27~]#/application/tomcat-sbce/bin/shutdown.sh UsingCATALINA_BASE:/application/tomcat-sbce UsingCATALINA_HOME:/application/tomcat-sbce UsingCATALINA_TMPDIR:/application/tomcat-sbce/temp UsingJRE_HOME:/usr/java/jdk UsingCLASSPATH:/application/tomcat-sbce/bin/bootstrap.jar:/application/tomcat-sbce/bin/tomcat-juli.jar Jul26,201810:58:18AMorg.apache.catalina.startup.CatalinastopServer SEVERE:Couldnotcontact[localhost:[8005]].Tomcatmaynotberunning. Jul26,201810:58:18AMorg.apache.catalina.startup.CatalinastopServer SEVERE:Catalina.stop: java.net.ConnectException:Connectionrefused(Connectionrefused) atjava.net.PlainSocketImpl.socketConnect(NativeMethod) atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) atjava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) atjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) atjava.net.Socket.connect(Socket.java:589) atjava.net.Socket.connect(Socket.java:538) atjava.net.Socket.<init>(Socket.java:434) atjava.net.Socket.<init>(Socket.java:211) atorg.apache.catalina.startup.Catalina.stopServer(Catalina.java:497) atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) atjava.lang.reflect.Method.invoke(Method.java:498) atorg.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406) atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
即为8005端口未运行,使用命令netstat -ant 发现 没有找到8005端口
[root@devops01-web-53scripts]#netstat-lntup|grepjava tcp00:::8009:::*LISTEN10373/java tcp00:::8080:::*LISTEN10373/java
解决办法:
修改$JAVA_HOME/jre/lib/security/Java.security 文件中 securerandom.source 配置项:
将 securerandom.source=file:/dev/random 修改为: securerandom.source=file:/dev/urandom(网上查询的结果,我改完这个就可以了,下面的未测试) 如果,仍然不生效,则修改为:file:/dev/./urandom
实战如下:
[root@devops01-web-53scripts]#vim/usr/java/jdk/jre/lib/security/java.security securerandom.source=file:/dev/random 修改为 securerandom.source=file:/dev/urandom
再次启动tomcat就有8005端口了,提示不是立刻就有8005端口,要等一小会才会有。
[root@devops01-web-53scripts]#netstat-lntup|grepjava tcp00::ffff:127.0.0.1:8005:::*LISTEN10615/java tcp00:::8009:::*LISTEN10615/java tcp00:::8080:::*LISTEN10615/java
验证8005端口延时启动过程:
[root@szxjdw01-web-27~]#ps-ef|grepjava root65786202011:02pts/100:00:00grepjava [root@szxjdw01-web-27~]#/application/tomcat-sbce/bin/startup.sh UsingCATALINA_BASE:/application/tomcat-sbce UsingCATALINA_HOME:/application/tomcat-sbce UsingCATALINA_TMPDIR:/application/tomcat-sbce/temp UsingJRE_HOME:/usr/java/jdk UsingCLASSPATH:/application/tomcat-sbce/bin/bootstrap.jar:/application/tomcat-sbce/bin/tomcat-juli.jar Tomcatstarted. [root@szxjdw01-web-27~]#ps-ef|grepjava root658819911:02pts/100:00:10/usr/java/jdk/bin/java-Djava.util.logging.config.file=/application/tomcat-sbce/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048-Djava.protocol.handler.pkgs=org.apache.catalina.webresources-Dorg.apache.catalina.security.SecurityListener.UMASK=0027-Dignore.endorsed.dirs=-classpath/application/tomcat-sbce/bin/bootstrap.jar:/application/tomcat-sbce/bin/tomcat-juli.jar-Dcatalina.base=/application/tomcat-sbce-Dcatalina.home=/application/tomcat-sbce-Djava.io.tmpdir=/application/tomcat-sbce/temporg.apache.catalina.startup.Bootstrapstart root66106202011:02pts/100:00:00grepjava [root@szxjdw01-web-27~]#netstat-lntup|grepjava tcp00:::8009:::*LISTEN6588/java tcp00:::8080:::*LISTEN6588/java [root@szxjdw01-web-27~]#/application/tomcat-sbce/bin/shutdown.sh UsingCATALINA_BASE:/application/tomcat-sbce UsingCATALINA_HOME:/application/tomcat-sbce UsingCATALINA_TMPDIR:/application/tomcat-sbce/temp UsingJRE_HOME:/usr/java/jdk UsingCLASSPATH:/application/tomcat-sbce/bin/bootstrap.jar:/application/tomcat-sbce/bin/tomcat-juli.jar Jul26,201811:02:48AMorg.apache.catalina.startup.CatalinastopServer SEVERE:Couldnotcontact[localhost:[8005]].Tomcatmaynotberunning. Jul26,201811:02:48AMorg.apache.catalina.startup.CatalinastopServer SEVERE:Catalina.stop: java.net.ConnectException:Connectionrefused(Connectionrefused) atjava.net.PlainSocketImpl.socketConnect(NativeMethod) atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) atjava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) atjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) atjava.net.Socket.connect(Socket.java:589) atjava.net.Socket.connect(Socket.java:538) atjava.net.Socket.<init>(Socket.java:434) atjava.net.Socket.<init>(Socket.java:211) atorg.apache.catalina.startup.Catalina.stopServer(Catalina.java:497) atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) atjava.lang.reflect.Method.invoke(Method.java:498) atorg.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406) atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495) [root@szxjdw01-web-27~]#netstat-lntup|grepjava tcp00::ffff:127.0.0.1:8005:::*LISTEN6588/java tcp00:::8009:::*LISTEN6588/java tcp00:::8080:::*LISTEN6588/java [root@szxjdw01-web-27~]#/application/tomcat-sbce/bin/shutdown.sh UsingCATALINA_BASE:/application/tomcat-sbce UsingCATALINA_HOME:/application/tomcat-sbce UsingCATALINA_TMPDIR:/application/tomcat-sbce/temp UsingJRE_HOME:/usr/java/jdk UsingCLASSPATH:/application/tomcat-sbce/bin/bootstrap.jar:/application/tomcat-sbce/bin/tomcat-juli.jar [root@szxjdw01-web-27~]#netstat-lntup|grepjava
最后脚本被修改为:
[root@devops01-web-53application]#cat/etc/init.d/tomcat-sbce #!/bin/bash ###BEGININITINFO #Provides:tomcat #required-Start:$remote_fs$syslog #required-Stop:$remote_fs$syslog #Default-Start:2345 #Default-Stop:016 #Short-Description:tomcat-serverdaemon #Description:tomcat-serverdaemon ###ENDINITINFO # #chkconfig:-9515 #description:Tomcatstart/stop/statusscript #LocationofJAVA_HOME(binfiles) exportJAVA_HOME=/usr/java/jdk #AddJavabinaryfilestoPATH exportPATH=$JAVA_HOME/bin:$PATH #CATALINA_HOMEisthelocationoftheconfigurationfilesofthisinstanceofTomcat CATALINA_HOME=/application/tomcat-sbce #TOMCAT_USERisthedefaultuseroftomcat TOMCAT_USER=sysadmin #TOMCAT_USAGEisthemessageifthisscriptiscalledwithoutanyoptions TOMCAT_USAGE="Usage:$0{\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" #SHUTDOWN_WAITiswaittimeinsecondsforjavaproccesstostop SHUTDOWN_WAIT=20 [-f/etc/init.d/functions]&&./etc/init.d/functions actions(){ RETVAL=$? if[$RETVAL-eq0];then action"Tomcatis$1"/bin/true else action"Tomcatis$1"/bin/false fi } tomcat_pid(){ echo`ps-ef|grep$CATALINA_HOME|grep-vgrep|tr-s""|cut-d""-f2` } start(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;31mTomcatisalreadyrunning(pid:$pid)\e[00m" else echo-e"\e[00;32mStartingtomcat\e[00m" if[`user_exists$TOMCAT_USER`="1"];then su-$TOMCAT_USER-c$CATALINA_HOME/bin/startup.sh>/dev/null2>&1& else $CATALINA_HOME/bin/startup.sh fi status actionsStarted fi return0 } status(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;32mTomcatisrunningwithpid:$pid\e[00m" else echo-e"\e[00;31mTomcatisnotrunning\e[00m" fi } stop(){ pid=$(tomcat_pid) if[-n"$pid"];then echo-e"\e[00;31mStopingTomcat\e[00m" su-$TOMCAT_USER-c$CATALINA_HOME/bin/shutdown.sh>/dev/null2>&1& letkwait=$SHUTDOWN_WAIT count=0; until[`ps-p$pid|grep-c$pid`='0']||[$count-gt$kwait] do echo-n-e"\e[00;31mwaitingforprocessestoexit\e[00m\n"; actionstopped sleep1 letcount=$count+1; done if[$count-gt$kwait];then echo-n-e"\n\e[00;31mkillingprocesseswhichdidn'tstopafter$SHUTDOWN_WAITseconds\e[00m" kill-9$pid fi else echo-e"\e[00;31mTomcatisnotrunning\e[00m" fi return0 } user_exists(){ ifid-u$1>/dev/null2>&1;then echo"1" else echo"0" fi } case$1in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo-e$TOMCAT_USAGE ;; esac exit0
验证脚本:
脚本在root下面可以正常运行,在设置的普通账号可以运行,但是在非设置非root提示没有权限。
实际验证操作:有的机器8005可以立马启动,有的是延迟启动