首页

通过shell的&命令执行“./startup.sh & tail -f ../logs/catalina.out”时造成tomcat的所属的jvm关闭并且对于的服务挂掉了

标签:sh,sheel,tomcat,ssh,后台进程,守护进程,宕机,自动关闭     发布时间:2017-07-14   

一、问题描述

linux环境下重启tomcat,通过shell脚本并使用“./startup.sh &  tail -f ../logs/catalina.out启动tomcat进程”,在ssh终端或者终端会话超时,造成jvm进程也会shutdown,因此所属tomcat应用服务也自动停止,同时Catalina.out报出如下异常“Exception in thread "Thread-24" java.lang.NoClassDefFoundError: Could not initialize class com.xwood.isc.messageBroker..org.apache.zookeeper.ClientCnxnSocketNIO.cleanup..”异常,具体日志如下

..shutdown hook now,datetime=Jul 14, 2017 12:13:41 PM.@b@14-Jul-2017 12:13:41.795 INFO [Thread-22] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]@b@14-Jul-2017 12:13:41.802 INFO [Thread-22] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]@b@14-Jul-2017 12:13:41.804 INFO [Thread-22] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina@b@Exception in thread "Thread-24" java.lang.NoClassDefFoundError: Could not initialize class com.xwood.isc.messageBroker@b@        at com.xwood.isc.messageBroker$Customer.run(messageBroker.java:1104)@b@        at java.lang.Thread.run(Thread.java:745)@b@14-Jul-2017 12:13:50.295 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.@b@14-Jul-2017 12:13:50.301 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.@b@14-Jul-2017 12:13:50.303 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [localhost-startStop-1-SendThread(10.14.217.14:2181)] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:@b@java.lang.Thread.sleep(Native Method)@b@org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:230)@b@org.apache.zookeeper.ClientCnxn$SendThread.cleanup(ClientCnxn.java:1246)@b@org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1182)@b@14-Jul-2017 12:13:50.304 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [t_pizza_local_persist] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:@b@java.lang.Thread.sleep(Native Method)

二、解决方法

因为&命令把tomcat所属的jvm进程转为后台进程(守护进程)执行,附属于当前ssh的客户端主进程,当前ssh窗口关闭的同时,tomcat所属的守护进程也就自动关闭了,所以下次启动tomcat服务器应该使用下面两种方式

#第一种方式@b@sh  tomcat/bin/startup.sh@b@tail  -f  tomcat/logs/catalina.out@b@#第二种方式 :通过| 命令追加进程(开启独立进程)@b@sh   tomcat/bin/startup.sh  |   tail  -f  tomcat/logs/catalina.out