文档章节

服务器上如何更保险的启动普通java进程

zgw06629
 zgw06629
发布于 2015/04/29 19:20
字数 479
阅读 442
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

在服务器上启动普通java进程时(非web服务器) 以后台方式运行,命令一般是这样,如:

java com.company.XXX &

但偶尔会有这种情况,前一晚启动的进程,第二天去服务器上看时发现却没有相关进程存在。

作为一个无神论者,当然不相信是见鬼了。 咨询运维同事得知应该是退出SSH终端导致。

任务在什么情况下会被无故干掉呢?你退出终端的时候就会。因为Linux下任务是与操作者终端关联的,只要你退出了终端,与其关联的所有任务都会被干掉。

(摘自Linux就是这个范儿 P62)

如下所示:

$ java WaitForever &
[1] 8951
$ jps -l
8951 WaitForever
9001 sun.tools.jps.Jps
#通过ctrl+shift+w方式关闭终端
#再新开启一个终端(ctrl+shift+t)
#在新终端中 进程已经不在了
$ jps -l
9523 sun.tools.jps.Jps

但若显式执行exit退出终端的话,可以避免上述问题。如下所示:

$ java WaitForever &
[1] 10603
$ jps -l
10626 sun.tools.jps.Jps
10603 WaitForever
$ exit
#新开启一个终端 
$ jps -l
10885 sun.tools.jps.Jps
10603 WaitForever


当然可以用更保险的启动进程方式,即使用nohup, 它能保证被它启动的任务脱离与终端的关联。如下所示:

$ nohup java WaitForever &
[1] 11895
nohup: ignoring input and appending output to ‘nohup.out’
$ jps -l
11936 sun.tools.jps.Jps
11895 WaitForever
#使用ctrl+shift+w关闭终端
#新开启一个终端 进程还在
$ jps -l
11895 WaitForever
12574 sun.tools.jps.Jps

需要注意,命令的所有输出都会输出到nohup.out这个文件中。

补充:

还可以利用screen,如:

screen -dmLS processName com.company.XXX

这时相当于开启了一个新的会话来启动该java进程。


参考文档:

《Linux 就是这个范儿》2.4.1 执行程序的方法,以及多任务协调机制

screen 介绍:

http://www.ibm.com/developerworks/cn/linux/l-cn-screen/


zgw06629

zgw06629

粉丝 19
博文 54
码字总数 30471
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
Tomcat多实例集群架构 安全优化和性能优化

Tomcat多实例 复制tomcat目录 #将tar解压出来的tomcat复制出两个实例来 cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat1cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomca......

osc_no8p54mk
2018/08/26
2
0
神奇的Java僵尸(defunct)进程问题排查过程

现象描述 大概1个月多以前 在启动脚本中增加了tail -f 用来启动后追踪日志判断是否启动成功 后发现无法执行shutdown.sh(卡住 利用curl) 然后无奈使用kill -9 但通过ps -el 发现此时进程变为d...

osc_9ow0lf0i
2019/09/20
13
0
关于 Java 性能监控您不知道的 5 件事

当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中。跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的,因为 Java 虚拟机有黑盒效应,而且 Java 平台分析工具一贯就有缺陷。...

红薯
2010/08/22
960
5
如何定位生产上CPU飙高100%的问题?

概括来说,分三步: 1,首先找到是哪个进程的CPU占有率飙到了100%。 2,根据进程号pid,定位到是哪个线程,找到对应线程的tid。 3,导出对应线程的dump日志文件,分析日志文件定位具体代码。...

osc_bwy4ep83
05/31
16
0
JMX,Jstatd做好JVM应用上线的最后一层保障

[TOC]一个成功的java项目标准并不仅仅是业务功能实现,但是纵观国内,很多项目组在前期项目开发设计中只考虑了业务功能,没有考虑项目后期维护的监控设计。没有完善的监控运维设计,项目存活...

osc_z2jt870t
2018/09/06
1
0

没有更多内容

加载失败,请刷新页面

加载更多

再见,Eclipse...

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 6 分钟。 来源:cnblogs.com/ouyida3/p/9901312.html 最近,改用了 IDEA,同事都说我投敌了。当然,这些同事都是和我一...

良月柒
05/24
0
0
kafka分区数过多引发的弊端

点击上方蓝字“极客运维”一起运筹帷幄 上篇文章我们了解到,如果一个topic分区越多,理论上整个集群所能达到的吞吐量就越大。那么,分区数越多就越好吗?显然不是。今天我们来聊下kafka在分...

hyper-xu
01/02
0
0
ggplot2作柱形图中排列顺序和堆积顺序的设置

在使用R语言的ggplot2包作柱形图时,有时需要设置排列和堆积的顺序。下面以自带的数据集diamonds作为演示。 library(ggplot2) set.seed(1234) # 从数据集 diamonds中抽取1000个样本 diam <- ...

小石头记
2018/05/04
0
0
我为什么要冒险从工业界离职做内容平台有三AI

新搬家,顺便回答下很多朋友都问过的问题,我为什么要冒着伤害职业生涯的危险,从工业界离职做有三AI,顺便透露一下,明年我就会重新回到工业界。 从读书时代说起 首先要说起一点学生时代的背...

言有三
2019/10/27
0
0
你说,一个Java字符串到底有多少个字符?

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取推荐书籍 来源:urlify.cn/qYNR3q 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值...

osc_s6yenydw
7分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部