在Linux后台运行jar包

当我准备部署一个jar包到阿里云上运行时候遇到的问题。

公司后台框架用的是Spring boot之前公司的服务器一直运行在tomcate容器中,所以打出来的包都是war包

最近公司升级架构,采用docker微服务(也是阿里云提供的技术),这样一来就更适合打包成jar运行在docker容器里。

普通的运行jar包命令

$ java -jar xxxx.jar &

这个命令有个缺点,当我关闭终端时命令也随之停止。作为后端肯定必须24小时运行下去,我总不能连我电脑一起一直开着。所以要找到一种后台运行jar的方法.

后台运行jar包命令

$ nohup java -jar xxx.jar &

多了一个nohup命令,这个命令就可以让jar运行在Linux后台,即使你关闭终端程序不会终止。

多个jar包可以一起运行

$ nohup java -jar xxx1.jar & nohup java -jar xxx2.jar & nohup java -jar xxx3.jar &

查看后台

如果你想查看当前后台运行了哪些用这个命令:

$ jobs

将会打印出类似下面这样的结果:

[1]   Running                 nohup java -jar 1111.jar &                                                                                                                                                                                         
[2]-  Running                 nohup java -jar 2222.jar &                                                                                                                                                                                        
[3]+  Running                 nohup java -jar 3333.jar &

Running这一列代表程序状态,如果程序有问题,再打一次jobs命令就会看到变成Exiting表示程序停止了,第三次输入jobs就看不到那个程序因为已经终止退出后台。

+-符号代表第一个和最后一个运行的后台程序。

其他相关信息我就不多说了,网上资料很多,这里只再举例不打印日志的方法:

nohup java -jar xxx1.jar >/dev/null 2>&1 &

nohup默认会输出日志到nohup.out,用>命令可以重新指定输出文件,这里指定了Linux黑洞,效果等同于没有输出日志。2>&1表示错误日志指向普通日志,因为普通日志已经去到黑洞,所以错误日志等同于也不输出。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。