Spring Boot 以 jar 包方式运行在后台

Spring-boot jar 包方式启动:
首先,为了防止和常用的 Tomcat 8080 端口冲突,将 Spring-boot 项目的端口号设置为 9090。
具体方法:在 application.properties 文件里写 server.port=9090。
使用 maven 命令:clean package 打包。
放到服务器上一个合适的位置。
使用 java -jar spring-boot01-1.0-SNAPSHOT.jar 命令,启动 jar 包。
然后,在浏览器输入 http://124.232.163.150:9090/hello 就可以看到有 json 格式的数据返回。

然而,上面的这种方式,只要控制台关闭,服务就不能访问了。下面我们使得 jar 包在后台运行。

java -jar spring-boot01-1.0-SNAPSHOT.jar > log.file 2>&1 &

对于上面的命令的解释:

  1. bash 中 0、1、2 三个数字分别代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。
数字含义
0标准输入(一般是键盘)
1标准输出(一般是显示屏,准确的说是用户终端控制台)
2标准错误(出错信息输出)

2. 输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test.c 将 test.c 重定向为 cat 命令的输入源。输出重定向是指定具体的输出目标以替换默认的标准输出,譬如 ls > 1.txt 将 ls 的结果从标准输出重定向为 1.txt 文本。
有时候会看到如 ls >> 1.txt这类的写法。
>>> 的区别在于:> 用于新建而 >> 用于追加。即 ls > 1.txt 会新建一个 1.txt 文件并且将 ls 的内容输出到新建的 1.txt 中,而 ls >> 1.txt 则用在 1.txt 已经存在,而我们只是想将 ls 的内容追加到 1.txt 文本中的时候。
3. 默认输入只有一个(0,STDIN_FILENO),而默认输出有两个(标准输出1 STDOUT_FILENO,标准错误2 STDERR_FILENO)。因此默认情况下,shell 输出的错误信息会被输出到 2,而普通输出信息会输出到 1 。但是某些情况下,我们希望在一个终端下看到所有的信息(包括标准输出信息和错误信息),要怎么办呢?对了,你可以使用我们上面讲到的输出重定向。思路有了,怎么写呢? 非常直观的想法就是 2>1 (将2重定向到1嘛),行不行呢?试一试就知道了。我们进行以下测试步骤:

步骤命令解释
1mkdir test && cd test创建 test 文件夹并进入 test 目录
2touch a.txt b.c c创建 a.txt、b.c、c 三个文件
3ls > 1按我们的猜测,这句应该是将 ls 的结果重定向到标准输出,因此效果和直接 ls 应该一样。但是实际这句执行后,标准输出中并没有任何信息
4ls执行 3 之后再次 ls ,则会看到 test 文件夹中多了一个文件 1
5cat 1查看文件1的内容,实际结果为:1 a.txt b.c c

可见步骤 3 中 ls > 1 并不是将 ls 的结果重定向为标准输出,而是将结果重定向到了一个文件 1 中。即 1 在此处不被解释为 STDOUT_FILENO,而是文件1。
4. 到了此时,你应该也能猜到 2>&1 的用意了。不错,2>&1 就是用来将标准错误 2 重定向到标准输出 1 中的。此处 1 前面的 & 就是为了让 bash 将 1 解释成标准输出而不是文件 1 。至于最后一个 & ,则是让 bash 在后台执行。

这里写图片描述

如果这个时候,我想关掉后台运行的 Spring Boot 的服务,我要这样做:

ps aux | grep spring | xargs kill -9

此时,控制台显示:

这里写图片描述

参考资料:
Spring boot jar 后台运行 - 茶爸爸 的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/xiaoyu411502/article/details/48520239

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值