转载地址:http://blog.knowsky.com/264489.htmphp
最近遇到了几回JBoss无规律自动关闭的奇怪现象,经过history历史命令和last登陆信息,都看不到有人操做过的迹象。java
后来查了一些资料,JBoss官方论坛给出的几条解释是:
1.JBoss本身没有设置能够自动shutdown的机制;
2.JBoss能够经过web console进行关闭,但咱们已经去掉了相关的软件包;
3.JBoss可能接受Ctrl+C或非后台运行的session中断信号而执行shutdown。web
后来我查到咱们的状况和第3点很相似:ajax
经过日志能够看到JBoss是在06:02:04接到一个关闭请求的。
2011-10-27 06:02:04,086 INFO [org.jboss.bootstrap.microcontainer.ServerImpl] (JBossShutdown Hook) Runtime shutdown hook called, forceHalt: true
2011-10-27 06:02:05,089 INFO [org.apache.coyote.http11.Http11Protocol] (JBossShutdown Hook) Pausing Coyote HTTP/1.1 on http-0.0.0.0-80
2011-10-27 06:02:05,090 INFO [org.apache.coyote.http11.Http11Protocol] (JBossShutdown Hook) Stopping Coyote HTTP/1.1 on http-0.0.0.0-80apache
而jack是在这个时候退出终端的:
jack pts/0 125.69.77.99 Thu Oct 27 05:20 - 06:02 (00:41)bootstrap
查看history历史记录,以前最后一次启动JBoss是在05:49:20经过执行restart_jboss.sh脚本完成的:
2011-10-27_05:49:20 ./restart_jboss.shsession
接着经过find命令在jack的home目录下找到了该restart_jboss.sh脚本。eclipse
继续查看了脚本内容,发如今一系列操做以后,最后执行了service jboss start 和 tail -f ./log/server.log 的动做,我怀疑是jack的非正常退出致使了JBoss的关闭,因而在虚拟机上作了测试。
结果证实确实如此,若是在执行了脚本以后直接关闭了客户端窗口,而不是经过exit正常退出的话,JBoss会自动执行shutdown,状况很是容易重现。jsp
可是按道理说,咱们是使用的JBoss官方自带的脚本,应该是与apache等其它软件自带的脚本同样让进程之后台服务的方式运行的,不该该接收非后台运行的session中断信号。但通过反复测试后,证实其并不是咱们想象中那样值得信赖。测试
所以,咱们从此仍是最好加上nohup来确保JBoss不会接收session的中断信号:nohup servicejboss start。