Linux jar包启动、停止、查看状态 快捷脚本

2023-11-05

在将Java项目部署到服务器上后,为了简化操作和提高效率,我们可以借助一个命令脚本来快速启动、停止和查看项目。这样可以避免反复执行繁琐的命令,提高开发效率。

直接上脚本
#!/bin/sh
port=8899 #定义变量等号左右不能有空格
jar_name=/home/project/PG/testPg.jar
log_path=/home/project/PG/log/`date +%y%m%d`_testPg.log
 
#运行脚本提示信息
tips(){
    echo "-------------------------------------"
    echo ""
    echo "项目端口: ${port}"
    echo "项目地址: ${jar_name}"
    echo ""
    echo "你可以使用如下参数进行操作"
    echo "-status -查看当前项目运行状态"
    echo "-start  -启动当前项目"
    echo "-stop  -停止当前项目"
    echo "-restart -重启当前项目"
    echo ""
    echo "-------------------------------------"
}
 
#查看状态
status(){
    #查询端口的PID {print $7}-取出打印的第七个值
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    #判断端口是否被占用
    if [ -z "${pid}" ];then
        echo "没有项目在运行"
    else
        echo "项目正在运行中"
    fi
}
 
#启动项目
start(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    if [ -z "${pid}" ];then
        echo "正在启动......"
        nohup nohup java -jar /home/project/PG/testPg.jar > $log_path 2>&1 &
    else
        echo "项目运行中或端口已被占用"
    fi
 
}
 
#停止项目
stop(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    if [ -z "${pid}" ];then
        echo "没有项目在运行,请先启动"
    else
        kill -9 $pid
        echo "已杀死端口为 ${port} 的应用"
    fi
}
 
#重启项目
restart(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    echo "正在杀死端口 ${port} 的pid ${pid} 中..."
    if [ -z "${pid}" ];then
        echo "项目未启动"
    else
        kill -9 $pid
    fi
    sleep 5 #睡眠五秒
    start  #调用启动方法
    echo "项目重启成功!"
}
 
#参数选项
case "$1" in
    "-status")
     status
     ;;
    "-start")
     start
     ;;
    "-stop")
     stop
     ;;
    "-restart")
     restart
     ;;
    *)
     tips
     ;;
esac

将上述命令脚本保存为`.sh`后缀文件,放置在与`jar`包同级目录,并赋予可执行权限,然后通过运行脚本来启动项目。

 简单好用。

部署发布常用命令:

1. 查看当前端口占用:

 netstat -anp | grep 8899

使用`netstat`命令查看当前端口的占用情况,过滤出指定端口(例如8899)的监听进程。

2. 启动项目:

java -jar -Dserver.port=8899 module-admin.jar

使用`java -jar`命令启动Java项目,通过`-Dserver.port`参数指定端口号(例如8899)。

3. 查看日志(最新100行):

tail ccc.log -n 100

使用`tail`命令查看指定日志文件(例如ccc.log)的最新100行数据。

4. 备份文件:


   - 备份后台jar文件:

cp -r /home/project/test/module-admin.jar /home/project/test/back/20230713module-admin.jar

使用`cp`命令将后台jar文件复制到指定的备份文件夹路径,以日期作为备份文件名。


   - 备份前台页面:

cp -r /home/project/test/adminUI /home/project/test/back/20230713adminUI

 使用`cp`命令将前台页面复制到指定的备份文件夹路径,以日期作为备份文件夹名。

5. 还原备份:


   - 还原后台文件:

cp -r /home/project/test/back/202307130module-admin.jar /home/project/test/module-admin.jar

  使用`cp`命令将指定的后台备份文件覆盖当前文件。


   - 还原前台页面:

cp -r /home/project/test/back/20230713adminUI /home/project/test/adminUI

 使用`cp`命令将指定的前台备份文件夹覆盖当前文件夹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux jar包启动、停止、查看状态 快捷脚本 的相关文章

  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • Java中RandomAccessFile的并发

    我正在创建一个RandomAccessFile对象通过多个线程写入文件 在 SSD 上 每个线程都尝试在文件中的特定位置写入直接字节缓冲区 并且我确保线程写入的位置不会与另一个线程重叠 file getChannel write buffe
  • jvm中本机代码如何转换为机器代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我读过一些文章说 jvm将字节码转换为机器码 jvm将字节码转换为本机代码 jvm 将字节码转换为系统调用 系统调用又由操作系统与硬件
  • 通过 html tidy 提供渲染 jsp 页面

    我有一个在 Glassfish 上运行的 Java 项目 它会呈现一些难看的 HTML 这是使用各种内部和外部 JSP 库的副作用 我想设置某种渲染后过滤器 通过 HTMLTidy 提供最终的 HTML 这样源代码就很好且整洁 有助于调试
  • Spring boot 2.0.5.RELEASE和mongo 4.0连接问题

    我正在关注使用 MongoDB 访问数据教程春季网站 https spring io guides gs accessing data mongodb 我将 Mongo DB 服务器版本 4 安装为服务当我使用客户端连接到它时 它的身份验证
  • 全静态方法和应用单例模式有什么区别?

    我正在创建一个数据库来存储有关我的网站用户的信息 我正在使用 stuts2 因此使用 Java EE 技术 对于数据库 我将创建一个 DBManager 我应该在这里应用单例模式还是将其所有方法设为静态 我将使用这个 DBManager 进
  • 如何找到我使用的 Lua 版本?

    我使用 Lua Glider 2 Corona SDK 最新版本开发应用程序 我怎样才能找到它使用哪个版本的Lua 谢谢 您可以使用全局变量 VERSION http www lua org manual 5 2 manual html p
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 如何使用 Selenium 中的索引切换到窗口

    由于selenium不提供切换到窗口 多个窗口 的方法 但我想使用index html自定义方法来切换到不同的窗口 但下面的代码没有按预期工作 请建议以下方法的最佳实施 public void switchToWindowIndex int
  • selenium webdriver 中的多个程序执行不起作用

    Selenium WebDriver 中的多个程序执行不起作用 我编写了 1 个 testNG xml 文件和 2 个 java 类 我尝试从 xml 文件运行这两个 java 类 但这不起作用 XML代码
  • Servlet 调度程序当前不可用

  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • “___ 中的方法 ___() 是在无法访问的类或接口中定义的”编译错误

    我发现了一个奇怪的编译限制 我无法解释 并且我不明白这个限制的原因 示例1 考虑这些类 In package e1 public class C1 enum E1 A B C public E1 x In package e2 import
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • while 之后无法访问的语句[重复]

    这个问题在这里已经有答案了 我只是修改代码 在以下代码中出现错误 int x 1 System out println x x while true x System out println x x 错误在最后一行 我可以知道错误 错误 无
  • Struts2中的变量声明

    Struts2中如何声明变量并为该变量赋值 使用设置标签
  • 如何在 Log4j2 - JSON 布局中自定义或删除默认属性

    In Spring Boot 2我已配置的应用程序Log4j2 with JsonLayout像下面这样
  • Lucene/Hibernate 搜索锁定异常

    我使用 Hibernate Search 在 Web 应用程序上索引和全文搜索项目 没有问题 来自我的 pom xml

随机推荐

  • powershell cs-UTF-16LE编码上线

    0x01前言 当我们要上线主机的时候 可能会因为你的代码含有木马字符串 导致无法上线 0x02问题 1 例子 powershell exe exec bypass encodedCommand ZQBjAGgAbwAgACIAMQAyADM
  • Limited access In Sharepoint 2010

    When a security principal is added to the scope of an item with unique permissions the security principal is immediately
  • css穿透(带案例详解)

    问题背景 在使用vue构建项目的时候 引用了第三方组件库 只需要在当前页面修改第三方组件库的样式 以做到不污染全局样式 通过在样式标签上使用scoped 达到样式只作用到本页面的目的 但是此时再修改组件样式就不起作用了 div class
  • qt creator中Q_OBJECT导致出现undefined reference to vtable for 的错误

    在qt creator中新建了一个c 的类 刚开始编译可以通过 后来不知道为什么突然就编译报错 出现了undefined reference to vtable for 的错误 一开始以为是语法错误 结果找了很久都没有找到错误 后来发现把该
  • 构建SOA架构(笔记)

    1 什么是SOA架构设计师与设计和开发人员之间的差别呢 相信这些都是使大家最容易产生迷惑的问题 举个实际的例子来说 当构建一个基于SOA架构的系统的时候 针对一个具体的 service 系统设计人员主要应该关注的是这个service能够为外
  • Android uiautomatorviewer无法启动

    Android uiautomatorviewer无法启动 uiautomatorviewer 是android sdk提供的用来抓取布局的工具 然而有时候会出现无法启动 点击闪退的现象 先说原因 JDK版本高于java8 google 没
  • 异常org.hibernate.HibernateException: The database returned no natively generated identity解决方案

    配置文件
  • php 优化代码教程,PHP代码性能优化的技巧讲解_PHP教程

    PHP代码性能优化1 不要随便就复制变量 有时候为了使 PHP 代码更加整洁 一些 PHP 新手 包括我 会把预定义好的变量复制到一个名字更简短的变量中 其实这样做的结果是增加了一倍的内存消耗 只会使程序更加慢 试想一下 在下面的例子中 如
  • 使用py2neo创建知识图谱报错The following settings are not supported:{‘http_port‘:7474}

    今天在运行创建知识图谱的代码时 报以下错 The following settings are not supported http port 7474 再查看一下自己的py2neo版本 发现是由于版本太高了 将版本降低后就可以运行了 我这
  • js取整数、取余数、取小数点后几位的方法

    取整 1 取整 丢弃小数部分 保留整数部分 parseInt 5 2 2 2 向上取整 向上取整 有小数就整数部分加1 Math ceil 5 2 3 3 向下取整 向下取整 丢弃小数部分 Math floor 5 2 2 4四舍五入 四舍
  • hexo博客网站搭建

    Hexo简介 Hexo 是一个快速 简洁且高效的博客框架 Hexo 使用 Markdown 或其他渲染引擎 解析文章 在几秒内 即可利用靓丽的主题生成静态网页 安装前提 在安装Hexo之前需要安装以下应用 Node js Git markd
  • VS Code安装教程

    一 下载 1 官网 下载地址 2 下载 根据自己电脑型号下载 此处以Windows为例 二 安装 1 下载完成后 直接点击安装包安装 即可 2 开始安装 然后下一步 3 可以在此处自定义地址 然后下一步 4 默认设置 下一步 5 设置系统的
  • c# websocketServer base64乱码

    下载地址 https download csdn net download peiranshuiyu 10168136 这个接收图片base64乱码 后来查原因 byte 102400 的参数 太短不能完整接收 太长又乱码 后来调成1024
  • 一文搞懂ES6的Map

    什么是Map Map是ECMAScript 6 的新增特性 是一种新的集合类型 为javascript带来了真正的键 值存储机 制 Map 对象存有键值对 其中的键可以是任何数据类型 Map 对象记得键的原始插入顺序 Map 对象具有表示映
  • 用 canvas 做个好玩的网站背景

    不知不觉又好久没更过博客了 老调新弹一下 之前做的一个小效果 觉得蛮有意思的 也有朋友问是怎么做的 就分享一下 写个博文吧 先上demo吧 http whxaxes github io canvas test src Funny demo
  • mysql 给查询语句中增加一列自增id

    举例 SELECT rownum rownum 1 AS id t XH t CFXFBHLB FROM SELECT rownum 0 r t xfcf tq as t 说明 SELECT rownum rownum 1 AS id t
  • windows11 Windows Terminal 添加 Git-Bash 支持

    微软于 2020 05 20 发布了 Windows Terminal 1 0 正式版 安装后默认有三种终端可选 Windows PowerShell 命令提示符 Azure Cloud Shell 升级到Windows11之后默认的终端就
  • 【数据结构】斐波那锲查找算法

    数据结构 斐波那锲查找算法 在写斐波那锲查找算法时遇到ArrayIndexOutOfBoundsException错误 错误提示如下图 即出现了k 0 程序查询第k 1个斐波那锲数列的值时出现了索引越界 下面是修改错误后运行正确的斐波那锲查
  • 高效开发大屏可视化项目第二弹:入场动画和无缝滚动

    这是一个基于Vue 3 Echarts 高德地图和Pinia开发的大屏可视化项目 提供了如下功能 大屏适配 图表组件 Echarts 封装 高德地图组件封装 拖拽布局 入场动画 无缝滚动 源码地址 在线示例 前言 上一篇文章分享了大屏适配
  • Linux jar包启动、停止、查看状态 快捷脚本

    在将Java项目部署到服务器上后 为了简化操作和提高效率 我们可以借助一个命令脚本来快速启动 停止和查看项目 这样可以避免反复执行繁琐的命令 提高开发效率 直接上脚本 bin sh port 8899 定义变量等号左右不能有空格 jar n