在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 国际许可协议 进行许可。