现象
这几天一直被一个问题困扰,每次springboot的tomcat启动之后, 然后过了一段时间看, 进程就突然自己关闭掉了。 然后日志是:
ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6d5380c2: startup date [Sun Sep 24 17:51:04 CST 2017]; root of context hierarchy
o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
解法
网上也有说这个问题, 但是大多数说的是, 这个是一个非 web应用, 需要添加这个依赖,链接
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
要么就是添加tomcat的依赖。
但是搞了很多次发现原来是怎么样,就是怎么样, 直到看到这篇文章 , 才发现,原来是启动方式的问题, 需要加 nohup, 然后加了 nohup, 果然就好了。这也纠正了我的一个误区, 我一直以为 & 和 nohup是一样的。
nohup 和 &
可以参考这篇文章
简单来说就是:
- 用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
- &是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出