文档章节

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

zgw06629
 zgw06629
发布于 2015/04/29 19:20
字数 479
阅读 75
收藏 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
粉丝 16
博文 54
码字总数 30471
作品 0
海淀
程序员
私信 提问
static变量的线程间共享,进程间不共享

JAVA中通常我们会使用static域变量来在内存中缓存数据或长驻内存数据,众所周知 ,static是类的所有实例所共享. 考虑一个问题,假如在多线程情况下,共享数据肯定会有危险的, 例如使用Simpl...

cjun1990
2014/12/29
0
0
Gradle学习(九)——构建环境

转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/78914742 通过gradle.properties配置构建环境 为了更容易的配置用于构建的java进程,Gradle提供了几个选项。你可以在本地...

lastsweetop
2017/12/27
0
0
Java 学习(27)---(多线程 / Runnable 接口 / 调度和优先级)

多线程 1 .概念 多线程:一个应用程序有多条执行路径进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 ...

姜白告
08/03
0
0
常用的服务器上Tomcat配置

JVM 1.1. 使用 Server JRE 替代JDK。 服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作。 理由:一旦服务器被控制,可以防止...

别寒
2014/08/26
0
0
JDK工具jstatd用法详解(转)

jstatd,即虚拟机的jstat守护进程,主要用于监控JVM的创建与终止,并提供一个接口允许远程监控工具依附到在本地主机上运行的JVM。 用法摘要 jstatd [ options ] 命令行选项。这些选项可以是任...

easonjim
2017/09/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
14分钟前
0
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
22分钟前
1
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
2
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
1
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部