由于maven使用的种种问题,以前springboot版本变化较快带来的一些不兼容问题,是否考虑下使用jar形式运行web程序,而不是固守于war包与tomcat;

主要原理有两点:

  1. 使用nohup来运行jar

    nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test &

    最后一个& 是输出日志的意思

nohup的意思不挂服务,常驻的意思,除非云服务器重启,那就没法了;最后一个&表示执行命令后要生成日志文件nohup.out

2. 使用脚本在每次重新部署的杀掉旧的进程 并启动新的进程


参考文献1:

https://blog.csdn.net/sai739295732/article/details/49444447

最后就是重头戏了,项目重启的脚本,写个start.sh 的脚本,注意脚本和jar包同级目录 , 如下:

5、脚本运行

cd /home (我是把jar包和脚本放在home下面)

chmod +x start.sh (第一次运行的时候获取一下超级管理员权限)

然后以后每次运行直接

./start.sh 即可

拷贝脚本的时候运行的时候如果报错,应该是文件格式转换的问题

报错: bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory

可以 yum -y install dos2unix

然后 dos2unix start.sh

重新运行脚本

脚本:

  1. #!/bin/sh
  2. # 记得修改这里的 resource-0.0.1-SNAPSHOT.jar 这是包名
  3. RESOURCE_NAME= resource-0.0.1-SNAPSHOT.jar
  4. tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
  5. if [ ${tpid} ]; then
  6. echo 'Stop Process...'
  7. kill -15 $tpid
  8. fi
  9. sleep 5
  10. tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
  11. if [ ${tpid} ]; then
  12. echo 'Kill Process!'
  13. kill -9 $tpid
  14. else
  15. echo 'Stop Success!'
  16. fi
  17. tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
  18. if [ ${tpid} ]; then
  19. echo 'App is running.'
  20. else
  21. echo 'App is NOT running.'
  22. fi
  23. rm -f tpid
  24. nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test &
  25. echo $! > tpid
  26. echo Start Success!

参考文献2:

https://blog.csdn.net/sai739295732/article/details/49444447

  1. 接下来就是运行了。
  2. //window 服务器下。
  3. java -jar (jar包的包名)cyc.jar 或者是双击,隔一会儿就可以运行了。
  4. //linux 服务器下。
  5. 这里我已阿里云的ubuntu 来做实验。
  6. 这里其实可以向上面一样直接java -jar ,这样执行。
  7. 但是当你关闭了链接这个进程也会删除。
  8. 我找到的方法就是使用管道来实现运行,这样就不会因为关闭客户端(xshell),导致的进程也被删除的情况。
  9. 首先先用vim创建文件start.sh
  10. vim start.sh
  11. 在文件中写入
  12. java -jar cyc.jar
  13. 在保存一下:wq
  14. 先给文件 chmod 777 start.sh 权限
  15. 其次:
  16. nohup ./start.sh &
  17. 就可以运行了。
  18. 最后扩展一下linux 常用命令:
  19. netstat -anp | grep 80 : 查看80端口
  20. kill sid :关闭sid的端口
  21. cat start.sh :查看start.sh 文件的内容

2499-springboot使用jar形式打包在linux上运行的更多相关文章

  1. springboot打成的jar包如何在Linux上持久运行

    一.首先说说在没有springboot的时候,项目是如何部署的? 1.动态web项目 动态web项目部署很方便,基本上上传文件到服务器的tomcat里面的webapps文件夹下即可完成部署.当然了,这 ...

  2. idea打包springboot+maven项目并发布在linux上

    2018年11月13日我亲测有效的,很简单的,借鉴博客:https://blog.csdn.net/smilecall/article/details/56288972 第一步:随便建一个maven类 ...

  3. flink idea 打包jar 并放到集群上运行

    flink idea 打包jar 并放到集群上运行 在开始之前注意前提,当前项目的scala的版本要和集群上的scala一致   我已经创建好一个wordCount的flink项目   注意项目的po ...

  4. 不装mono,你的.NET程序照样可以在Linux上运行!

    让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序. 这种运行.net程序的办法有两个弱点,一个是需要客户机安装 ...

  5. 在Linux上运行C#

    众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...

  6. jmeter操作数据库,分布式,在Linux上运行

    jmeter操作数据库: 1.在测试计划中导入数据库jar包 2.添加链接数据库信息 3.mysql:jdc:mysql://192.168.1.116:3307/bugfree?allowMulti ...

  7. C#在linux上运行实现

    1 C#开发完了服务 2 部署到linux centos7上 3无法直接运行 解决方法 1 linux cenos7上安装mono  2 执行mono xxx.exe 即可 解决方法2 下载 anye ...

  8. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  9. Wine——在Linux上运行Windows软件

    官网:https://www.winehq.org/ 参考: wikipedia 教你使用Wine在Linux上运行Windows软件 如何安装和使用Wine,以便在Linux上运行Windows应用 ...

随机推荐

  1. 聊聊FLINK-25631贡献

    从入行做数据库开发,到2018年过渡到大数据开发,可以说我已经与sql朝夕相处了七八年了,经常惊讶于简单的语法就能产生复杂的操作,而且还能根据索引等统计信息自动优化,不禁很想实现自己的sql语法,却不 ...

  2. ReentrantLock可重入、可打断、Condition原理剖析

    本文紧接上文的AQS源码,如果对于ReentrantLock没有基础可以先阅读我的上一篇文章学习ReentrantLock的源码 ReentrantLock锁重入原理 重入加锁其实就是将AQS的sta ...

  3. DirectX11--CPU与GPU计时器

    前言 GAMES104的王希说过: 游戏引擎的世界里,它的核心是靠Tick()函数把这个世界驱动起来. 本来单是一个CPU的计时器是不至于为其写一篇博客的,但把GPU计时器功能加上后就不一样了.在这一 ...

  4. awd平台搭建及遇到的问题

    1.安装docker环境 a.使用的是ubuntu系统,通过sudo apt install docker.io进行docker得安装,此方式会自动启动docker服务. b.通过curl -s ht ...

  5. 2020级cpp上机考试题解#B卷

    A卷的第七题我只会一个个排除的方法 意思就是暂时没有好办法所以A卷不搞了 1:递归函数求数列 题意: 有一个递归函数int f(int m),计算结果代表了数列的第m项.当m等于1时,函数结果返回1: ...

  6. uni-app 中实现 onLaunch 异步回调后执行 onLoad 最佳实践

    前言 好久没写博客了,由于公司业务需要,最近接触uiapp比较多,一直想着输出一些相关的文章.正好最近时间富余,有机会来一波输出了. 问题描述 在使用 uni-app 开发项目时,会遇到需要在 onL ...

  7. Stream.toList()和Collectors.toList()的性能比较

    昨天给大家介绍了Java 16中的Stream增强,可以直接通过toList()来转换成List. 主要涉及下面这几种转换方式: list.stream().toList(); list.stream ...

  8. 参与 2022 第二季度 Flutter 开发者调查

    2022 Google I/O 大会正式落下帷幕,Flutter 作为 14 个开发者产品和平台中的一款,吸引了来自全球的很多开发者们的关注.随着全国很多地方已经进入夏季,Flutter 今年第二季度 ...

  9. mysql刷题笔记

    近期,为提升自己的工程能力,在休息时常通过刷题来回顾一下基础性知识. 于是选择了牛客网上的mysql知识题库练手,过程中,主要遇到了几个比较有意思的题,记录下来,方便回顾. 题1:SQL29 计算用户 ...

  10. django框架9

    内容概要 用户名动态校验 删除二次确认 sweetalert前端插件 django自带的序列化组件 批量数据操作 分页器推导流程 自定义分页器封装代码 自定义分页器使用方法 校验性组件之forms组件 ...