说一下三种jar包在Linux的启动方式
最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,特在此分享一下。
这里默认要启动的jar包为demo-0.0.1-SNAPSHOT.jar
第一种:当前窗口方式启动
把jar包放到一个位置,然后执行 java -jar demo-0.0.1-SNAPSHOT.jar
这种方式,当当前窗口关闭的时候,服务也就关闭了。直接Ctrl+C也可以将当前服务关闭。
第二种:后台方式启动
nohup java -jar demo-0.0.1-SNAPSHOT.jar >> demo.log 2>&1 &
这种方式是将 demo-0.0.1-SNAPSHOT.jar 包后台启动,并且将日志输入demo.log中去了
第三种:脚本启动&&服务器启动自动启动
第三种启动方式中,有单纯的脚本启动,还加入了服务器启动jar包自动启动服务
查看jdk安装目录 :
执行 java -verbose
看最后两行
3.1 创建启动脚本 demo-start.sh
#!/bin/bash
export JAVA_HOME=/usr/java/jdk-8u261-linux-x64 #对应的 jdk 位置 可以使用 which java 查看具体位置
export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar /root/tianqq/demo-0.0.1-SNAPSHOT.jar >> demo.log 2>&1 &
echo $! > /root/tianqq/demo-start.pid #将上一次启动的pid 写入到指定文件
3.2 创建停止脚本 demo-stop.sh
#!/bin/sh
PID=$(cat /root/tianqq/demo-start.pid)
kill -9 $PID
此时是已经创建了脚本启动,
3.3 服务器启动自动启动
在目录/usr/lib/systemd/system 下创建demo.service
[Unit]
Description=run demo service
After=network.target
[Service]
Type=forking
# /bin/bash 下面这个一定要加,之前没有加的时候,报了好久的203错误
ExecStart= /bin/bash /root/tianqq/demo-start.sh
ExecStop=/root/tianqq/demo-stop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后就是下面的一通操作
systemctl start demo #启动 facepay 服务
systemctl stop demo #停止 facepay 服务
systemctl status demo #查看 facepay 服务当前的运行状态
systemctl enable demo #开机启动 facepay 服务
systemctl disable demo #取消开机启动 facepay 服务
systemctl list-unit-files; #查看当前服务(是否开机启动等)状态
3.4 验证
reboot # 重启服务器
重启服务器试一下,验证下jar服务是否重启了
这次本来是想要做一个jar包的自启动服务的,中间遇到了一些困难,特此分享下我目前掌握的三种jar包启动的方式。
欢迎转载,转载请注明原文出处
个人公众号 :hellotqq,坚持原创输出,坚持分享学习感悟,欢迎关注与您共同成长!
说一下三种jar包在Linux的启动方式的更多相关文章
- 将java打jar包成linux后台服务service
将java打jar包成linux后台服务service 第一步:将java程序打成jar包 build.gradle配置文件中加spring-boot-gradle-plugin插件,具体配置如下(配 ...
- 常见的装包的三种宝,包 bao-devel bao-utils bao-agent ,包 开发包 工具包 客户端
常见的装包的三种宝,包 bao-devel bao-utils bao-agent ,包 开发包 工具包 客户端
- 将一个jar包放到linux下定时执行
将一个jar包放到linux下定时执行 1.在dbtodb文件夹下新建一个dbtodb.sh,脚本内容为: #!/bin/bash cd /usr/dbtodb/ java -jar dbtodb.j ...
- 在IDEA中用三个jar包链接MongoDB数据库——实现增删改查
安装Robo 3T连接MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/98845789 使用Robo 3T操作Mon ...
- 在.NET Core中三种实现“可插拔”AOP编程方式(附源码)
一看标题肯定会联想到使用动态编织的方式实现AOP编程,不过这不是作者本文讨论的重点. 本文讨论另外三种在netcore中可实现的方式,Filter(过滤器,严格意义上它算是AOP方式),Dynamic ...
- build path libraries java基础--Jar包添加到build path方式说明--01
摘自: http://blog.csdn.net/haolongabc/article/details/7007701 java基础--Jar包添加到build path方式说明--01 前言:这段短 ...
- spring boot开发,jar包一个一个来启动太麻烦了,写一个bat文件一键启动
spring boot开发,jar包一个一个来启动太麻烦了,写一个bat文件一键启动 @echo offcd D:\workProject\bushustart cmd /c "title ...
- 关于spring boot打出的jar包在Linux中运行
众所周知, spring boot打出的jar包可以通过 "java -jar xxx.jar"的方式来运行 但是在Linux中, 通过这个命令运行的话会占用该窗口, 当我们 Ct ...
- springboot项目打包成jar包在Linux服务器默认80端口运行
springboot项目端口设置 在application.properties文件 server.port=80 在application.yml文件 server: port: 80 然后在ide ...
随机推荐
- springboot+bootstrap实现图书商城管理(大三下学期课程设计)
在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...
- python基础之open函数和路径处理
前言 本次内容主要介绍文件处理open函数以及路径处理. 一.open函数 根据前面介绍的函数调用方式,调用open函数. #open函数调用 open() TypeError: open() mis ...
- 【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互
引言 在第一章博客中,我们讲了Arduino对Esp32的一个环境配置,以及了解到了常用的一个总线通讯协议,其中有SPI,IIC,UART等,今天我为大家带来UART串口通讯和c#串口进行通讯的一个案 ...
- 【神经网络】丢弃法(dropout)
丢弃法是一种降低过拟合的方法,具体过程是在神经网络传播的过程中,随机"沉默"一些节点.这个行为让模型过度贴合训练集的难度更高. 添加丢弃层后,训练速度明显上升,在同样的轮数下测试集 ...
- VBA---文件操作
Text文件操作 Workbooks.OpenText() 载入一个文本文档,并将其作为包含单个工作表的新工作簿进行分列处理. 语法: 表达式.OpenText(Filename,StartRow, ...
- Java学习之Filter与Listener
0x00前言 web中的Filiter:当客户端访问服务端资源的时候,过率器可以把请求拦截下来,完成一些特殊的功能 完成的操作一般都是通用的作用:列如登录验证. web中的Listener一般用于加载 ...
- Go语言核心36讲24
你好,我是郝林,今天我们继续来聊聊panic函数.recover函数以及defer语句的内容. 我在前一篇文章提到过这样一个说法,panic之中可以包含一个值,用于简要解释引发此panic的原因. 如 ...
- 【ASP.NET Core】MVC控制器的各种自定义:修改参数的名称
在上一篇中,老周演示了通过实现约定接口的方式自定义控制器的名称. 至于说自定义操作方法的名称,就很简单了,因为有内置的特性类可以用.看看下面的例子. [Route("[controller] ...
- halcon如何识别硬币?
halcon如何识别硬币? 前言 最近一直在学习halcon,在此做了一个案例,分享给大家,效果图如下: 1.思路分析 通过观察,发现1元,5角,1角,它们在面值的文字描述不一样,硬币显示的花纹不一样 ...
- php + layui 文件上传 以及 拖拽上传
HTML: <div id="box"> <div id="drop_area">将文件拖拽到此区域</div> <d ...