【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 打包
-
切换到项目根目录:
cd /path/to/your/project -
运行 Maven 命令:
mvn clean install打包完成后,JAR 文件会出现在
target/目录,例如:target/myapp-1.0.jar。 -
验证打包结果:
java -jar target/myapp-1.0.jar
2. 使用 Gradle 打包
-
运行 Gradle 命令:
./gradlew build -
找到生成的 JAR 文件: 文件通常位于
build/libs/目录。
打包程序这里就用maven指令简单带过了,之前文章有详细讲过程序的打包方式,忘记的朋友可以看下面这篇:
SpringBoot项目:前后端打包与部署(使用 Maven)
二、运行 JAR 文件
完成打包后,可通过以下方式运行程序。
1. 前台运行
最简单的运行方式是直接执行以下命令:
java -jar myapp-1.0.jar
程序会在当前终端运行,日志输出到屏幕上。关闭终端后,程序会结束运行。
2. 后台运行
若希望程序在终端关闭后仍继续运行,可采用以下方式:
方法 1:使用 & 符号
java -jar myapp-1.0.jar &
- 说明:程序会以后台任务运行。可以通过以下命令查看和管理任务:
- 查看后台任务:
jobs - 将后台任务转到前台:
fg %1(1是任务编号)。 - 继续运行后台任务:
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. 使用脚本
-
赋予可执行权限:
chmod +x app.sh -
启动程序:
./app.sh start -
停止程序:
./app.sh stop -
查看状态:
./app.sh status
shell脚本详细可以看这个文章:【LINUX】Shell 脚本管理 Java 程序详解-CSDN博客
五、总结
通过本文的讲解,你已经学会如何在 Linux 下完成 Java 程序的打包、运行及管理:
- 打包:使用 Maven 或 Gradle 构建 JAR 文件。
- 运行:支持前台运行(直接运行)和后台运行(
&或nohup)。 - 关闭程序:通过
ps查找进程并使用kill停止。 - 脚本管理:编写 Shell 脚本实现一键启动、停止、重启和状态查看。
相关文章:
【LINUX】Linux 下打包与部署 Java 程序的全流程指南
文章目录 一、Java 程序打包1. 使用 Maven 打包2. 使用 Gradle 打包 二、运行 JAR 文件1. 前台运行2. 后台运行方法 1:使用 & 符号方法 2:使用 nohup 三、关闭运行中的程序1. 查找程序 PID2. 关闭程序 四、使用 Shell 脚本管理程序1. 创建 Shell 脚本…...
Spark 计算总销量
Spark 计算总销量 题目: 某电商平台存储了所有商品的销售数据,平台希望能够找到销量最好的前 N 个商品。通过分析销售记录,帮助平台决策哪些商品需要更多的推广资源。 假设你得到了一个商品销售记录的文本文件 product_id, product_name,…...
矩阵置零
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2ÿ…...
Ai编程cursor + sealos + devBox实现登录以及用户管理增删改查(十三)
一、什么是 Sealos? Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。 二、适用场景 业务运…...
深度解读:生产环境中的日志优化与大数据处理实践20241116
🌟 深度解读:生产环境中的日志优化与大数据处理实践 在现代软件开发中,日志是系统调试与问题排查的重要工具。然而,随着应用的复杂化和数据量的增长,传统日志模块在应对复杂嵌套对象、大数据类型时可能面临性能问题和安…...
docker 搭建gitlab,亲测可用
1、Gitlab镜像 查找Gitlab镜像 docker search gitlab 拉取Gitlab镜像 docker pull gitlab/gitlab-ce:latest 2、启动Gitlab容器 # 启动容器 docker run \-itd \-p 9980:80 \-p 9922:22 \-v /home/gitlab/etc:/etc/gitlab \-v /home/gitlab/log:/var/log/gitlab \-v /ho…...
SpringBoot 分层解耦
从没有分层思想到传统 Web 分层,再到 Spring Boot 分层架构 1. 没有分层思想 在最初的项目开发中,很多开发者并没有明确的分层思想,所有逻辑都堆砌在一个类或一个方法中。这样的开发方式通常会导致以下问题: 代码混乱࿱…...
opencv复习
目录 1.core 1.图像变换 1.1 affine仿射变换 1.2 透视变换 2.四元数(旋转) 2.1 轴角转四元数 2.2 旋转矩阵转四元数 2.3 欧拉角转旋转矩阵 2.4 四元数转旋转矩阵 2.5 四元数用eigen用的比较多 2. imgproc. Image Processing 2.1 bilateralF…...
flask-socketio相关总结
flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…...
2024-12-03OpenCV图片处理基础
OpenCV图片处理基础 OpenCV的视频教学:https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV摄像头读取 OpenCV使用摄像头读取图片帧,点击S保存当前帧到指定文件夹,点击Q关闭窗口,点击其他按钮打印按钮的值 要实现这个功能&…...
本地部署开源趣味艺术画板Paint Board结合内网穿透跨网络多设备在线绘画
文章目录 前言1.关于Paint Board2.本地部署paint-board3.使用Paint Board4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Paint Board公网地址 前言 大家好,是不是每次想要在电脑上画画时,都被那些笨重的专业绘图软件搞得头大如斗呢?…...
iOS、android的app备案超简单的公钥、md5获取方法
很多云商的备案平台,推荐下载一些工具来获取公钥和MD5,但是这些工具的跨平台性不是很好,安装也十分麻烦,安装的时候还需要设置国内源等等。 这里,其实有在线工具可以获取APP的公钥和MD5、SHA1值这些信息的。不需要安装…...
SpringCloud 与 SpringBoot版本对应关系,以及maven,jdk
目录 SpringCloud 与 SpringBoot各版本的对应关系 方式一 Learn 方式二 OverView SpringBoot与JDK、maven 容器等对应关系 SpringCloud 与 SpringBoot各版本的对应关系 SpringCloudSpringBootFinchley2.0.xFinchley.SR1Spring Boot >=2.0.3.RELEASE and <=2.0.9RELEAS…...
23种设计模式之装饰模式
目录 1. 简介2. 代码2.1 ABatterCake (抽象组件)2.2 BatterCake (具体组件)2.3 ADecorator (抽象装饰者)2.4 EggDecorator (具体装饰者)2.5 SausageDecorator(具体装饰者…...
HTMLHTML5革命:构建现代网页的终极指南 - 2. HTMLHTML5H5的区别
HTML&HTML5革命:构建现代网页的终极指南 2. HTML&HTML5&H5的区别 大家好,我是莫离老师 在上一节课,我们了解了HTML的重要性和前端开发的核心概念。 今天,我们将深入探讨 HTML、HTML5 和 H5 的区别,并重点…...
Django之ORM表操作
ORM表操作 1.ORM单表操作 首先想操作表的增删改查,需要先导入这个表,以之前创建的UserInfo表为例,在app下的views.py中导入 from app import modelsdef query(request):new_obj models.UserInfo(id1,name北北,bday2019-09-27,checked1,)new_obj.save()return Htt…...
python下几个淘宝、天猫、京东爬虫实例
以下是使用Python编写的针对淘宝、天猫、京东详情页的爬虫实例。请注意,这些实例仅供参考,实际使用时可能需要根据网站结构的变化进行调整,并且需要遵守各平台的爬虫协议和法律法规。 淘宝详情页爬虫实例 环境准备: Python 3.xSe…...
级联树结构TreeSelect和上级反查
接口返回结构 前端展示格式 前端组件 <template><div ><el-scrollbar height"70vh"><el-tree :data"deptOptions" :props"{ label: label, children: children }" :expand-on-click-node"false":filter-node-me…...
gradle下载慢解决方案2024 /12 /1android studio (Windows环境)
gradle下载慢解决方案2024 /12 /1 默认环境配置好了,环境配置和程序安装请出门右转 打开软件,点击右上角设置,找到如下设置页 选择本地安装并制定好你已经安装好的 gradle 应用保存即可 全局插件环境配置(新版本可以直接在设置中添加了) 找对应位置添加国内源并把前面的内置源…...
Python+OpenCV系列:GRAY BGR HSV
以下是 GRAY、BGR 和 HSV 三种色彩空间的对比,涵盖了它们的定义、特点、应用场景和优缺点: 1. 定义 GRAY: 灰度图像仅包含亮度信息,每个像素用一个值(通常在0到255之间)表示亮度(黑到白&#x…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
