欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下jar包后台运行

程序员文章站 2022-05-01 23:06:36
...

java-jar运行Jar包

两种方式

第一种:直接运行

java -jar javatest-0.0.1-SNAPSHOT.jar;
//关闭服务器连接时会关闭此程序进程,(推荐测试可用)

第二种:后台方式运行(守护进程运行)

nohup java -jar jarName-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &;
//nohup命令的作用就是让程序在后台运行,不用担心关闭连接进程断掉的问题了(推荐使用)

命令详解

详解:
nohup
nohup命令运行由Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。
在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup命令,添加 &(表示“and”的符号)到命令的尾部。
nohup是no hang up的缩写,就是不挂断的意思。
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。
该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
nohup和&的区别
&:指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
nohup:不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,
例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行。

nohup java -jar jarName-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &;
在上面的例子中,0:stdin (standard input)1:stdout (standard output)2:stderr (standard error)2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到msg.log文件中。

重新部署

ps -ef|grep java;
找到此进程: 
root  9836  0.1  4.6 10903144 1522292 ?  Sl   Nov08   1:31 java -jar jarName-0.0.1-SNAPSHOT.jar
执行:  kill -9 9836 杀死进程;:  9836 为进程标识号
(Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:#killall -9 name)
然后再重新执行一下nohup命令即可。