当前位置: 首页 > news >正文

【LINUX】Linux 下打包与部署 Java 程序的全流程指南

文章目录

    • 一、Java 程序打包
      • 1. 使用 Maven 打包
      • 2. 使用 Gradle 打包
    • 二、运行 JAR 文件
      • 1. 前台运行
      • 2. 后台运行
        • 方法 1:使用 `&` 符号
        • 方法 2:使用 `nohup`
    • 三、关闭运行中的程序
      • 1. 查找程序 PID
      • 2. 关闭程序
    • 四、使用 Shell 脚本管理程序
      • 1. 创建 Shell 脚本
      • 2. 使用脚本
    • 五、总结

在 Linux 系统中,完成 Java 程序的打包、运行和部署是开发人员的重要技能。本文将涵盖从 打包运行前后台管理关闭程序,到 使用 Shell 脚本管理程序的完整流程,助你高效完成任务。


一、Java 程序打包

程序开发完成后,需将代码打包为 JAR 文件以便部署。

1. 使用 Maven 打包

  1. 切换到项目根目录

    cd /path/to/your/project
    
  2. 运行 Maven 命令

    mvn clean install
    

    打包完成后,JAR 文件会出现在 target/ 目录,例如:target/myapp-1.0.jar

  3. 验证打包结果

    java -jar target/myapp-1.0.jar
    

2. 使用 Gradle 打包

  1. 运行 Gradle 命令:

    ./gradlew build
    
  2. 找到生成的 JAR 文件: 文件通常位于 build/libs/ 目录。

打包程序这里就用maven指令简单带过了,之前文章有详细讲过程序的打包方式,忘记的朋友可以看下面这篇:

SpringBoot项目:前后端打包与部署(使用 Maven)


二、运行 JAR 文件

完成打包后,可通过以下方式运行程序。

1. 前台运行

最简单的运行方式是直接执行以下命令:

java -jar myapp-1.0.jar

程序会在当前终端运行,日志输出到屏幕上。关闭终端后,程序会结束运行。

2. 后台运行

若希望程序在终端关闭后仍继续运行,可采用以下方式:

方法 1:使用 & 符号
java -jar myapp-1.0.jar &
  • 说明:程序会以后台任务运行。可以通过以下命令查看和管理任务:
    • 查看后台任务jobs
    • 将后台任务转到前台fg %11 是任务编号)。
    • 继续运行后台任务bg %1
方法 2:使用 nohup
nohup java -jar myapp-1.0.jar > app.log 2>&1 &
  • nohup:忽略终端关闭信号,确保程序持续运行。
  • > app.log:将日志保存到 app.log 文件。
  • 2>&1:将错误日志也保存到同一个文件。

三、关闭运行中的程序

1. 查找程序 PID

通过 ps 命令找到正在运行的 Java 程序:

ps -ef | grep java

输出示例:

root     10901  1  0 12:00 ?  00:00:20 java -jar myapp-1.0.jar

其中,10901 是程序的进程 ID(PID)。

2. 关闭程序

使用 kill 命令根据 PID 终止程序:

kill 10901

若无法正常关闭,可以强制终止:

kill -9 10901

四、使用 Shell 脚本管理程序

手动启动和关闭程序可能显得繁琐。为简化操作,可以使用脚本管理程序。

1. 创建 Shell 脚本

新建一个 app.sh 文件,内容如下:

#!/bin/bashAPP_NAME="myapp-1.0.jar" # JAR 文件名
LOG_FILE="app.log"       # 日志文件
PID_FILE="app.pid"       # PID 文件case "$1" instart)if [ -f "$PID_FILE" ]; thenecho "程序已运行,PID=$(cat $PID_FILE)"exit 1finohup java -jar $APP_NAME > $LOG_FILE 2>&1 &echo $! > $PID_FILEecho "程序已启动,PID=$(cat $PID_FILE)";;stop)if [ -f "$PID_FILE" ]; thenkill $(cat $PID_FILE)rm -f $PID_FILEecho "程序已停止"elseecho "未找到运行中的程序"fi;;restart)$0 stop$0 start;;status)if [ -f "$PID_FILE" ]; thenecho "程序正在运行,PID=$(cat $PID_FILE)"elseecho "程序未运行"fi;;*)echo "用法: $0 {start|stop|restart|status}"exit 1;;
esac

2. 使用脚本

  1. 赋予可执行权限:

    chmod +x app.sh
    
  2. 启动程序:

    ./app.sh start
    
  3. 停止程序:

    ./app.sh stop
    
  4. 查看状态:

    ./app.sh status
    

shell脚本详细可以看这个文章:【LINUX】Shell 脚本管理 Java 程序详解-CSDN博客


五、总结

通过本文的讲解,你已经学会如何在 Linux 下完成 Java 程序的打包、运行及管理:

  1. 打包:使用 Maven 或 Gradle 构建 JAR 文件。
  2. 运行:支持前台运行(直接运行)和后台运行(&nohup)。
  3. 关闭程序:通过 ps 查找进程并使用 kill 停止。
  4. 脚本管理:编写 Shell 脚本实现一键启动、停止、重启和状态查看。
http://www.lryc.cn/news/497845.html

相关文章:

  • Spark 计算总销量
  • 矩阵置零
  • Ai编程cursor + sealos + devBox实现登录以及用户管理增删改查(十三)
  • 深度解读:生产环境中的日志优化与大数据处理实践20241116
  • docker 搭建gitlab,亲测可用
  • SpringBoot 分层解耦
  • opencv复习
  • flask-socketio相关总结
  • 2024-12-03OpenCV图片处理基础
  • 本地部署开源趣味艺术画板Paint Board结合内网穿透跨网络多设备在线绘画
  • iOS、android的app备案超简单的公钥、md5获取方法
  • SpringCloud 与 SpringBoot版本对应关系,以及maven,jdk
  • 23种设计模式之装饰模式
  • HTMLHTML5革命:构建现代网页的终极指南 - 2. HTMLHTML5H5的区别
  • Django之ORM表操作
  • python下几个淘宝、天猫、京东爬虫实例
  • 级联树结构TreeSelect和上级反查
  • gradle下载慢解决方案2024 /12 /1android studio (Windows环境)
  • Python+OpenCV系列:GRAY BGR HSV
  • 丢垃圾视频时间检测 -- 基于状态机的实现
  • 【QT】一个简单的串口通信小工具(QSerialPort实现)
  • 24/12/5 算法笔记<强化学习> doubleDQN,duelingDQN
  • 道可云人工智能元宇宙每日资讯|全国工商联人工智能委员会成立会议在南京举办
  • MySQL数据库(2)-检查安装与密码重置
  • C# 13 中的新增功能
  • 视频自学笔记
  • easyexcel 导出日期格式化
  • 02-开发环境搭建
  • DBeaver导入csv到数据库
  • React第十一节 组件之间通讯之发布订阅模式(自定义发布订阅器)