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

若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控

 

脚本使用说明

  1. 启动应用sh app.sh start
  2. 停止应用sh app.sh stop
  3. 检查应用状态sh app.sh status
  4. 重启应用sh app.sh restart

注意事项

  • 请确保你的系统上安装了 Java 环境,并且 ruoyi-admin.jar 文件存在于脚本可以访问的路径中。
  • 脚本中使用了 lsof 命令来检查端口占用情况,但这是一个拼写错误。通常,我们使用 lsofnetstatss 命令来实现这个功能。你需要根据系统环境替换正确的命令。
  • 脚本中的 nohup 也是拼写错误,正确的应该是 nohup
  • nobup.log 文件用于记录应用启动时的输出,请确保脚本对该文件有写入权限。
#!/bin/bash  
APP_NAME=ruoyi-admin.jar  
PORT=9021  # 假设你的应用绑定到这个端口  usage() {  echo "Usage: sh app.sh [start|stop|restart|status]"  exit 1  
}  is_exist(){  pid=$(lsof -t -i :$PORT)  # 使用lsof命令查找使用指定端口的PID  if [ -z "$pid" ]; then  return 1  else  return 0  fi  
}  start(){  is_exist  if [ $? -eq 0 ]; then  echo "${APP_NAME} is already running on port $PORT."  else  # nohup java -Xms256m -Xmx512m -jar $APP_NAME > /dev/null 2>&1 &  nohup java -Xms256m -Xmx512m -jar $APP_NAME >nobup.log 2>&1 & fi  
}  stop(){  is_exist  if [ $? -eq 0 ]; then  kill -9 $pid  # 关闭找到的进程  echo "Stopped ${APP_NAME} running on port $PORT."  else  echo "${APP_NAME} is not running on port $PORT."  fi  
}  status(){  is_exist  if [ $? -eq 0 ]; then  echo "${APP_NAME} is running on port $PORT. Pid is $pid"  else  echo "${APP_NAME} is NOT running on port $PORT."  fi  
}  restart(){  stop  start  
}  case "$1" in  "start")  start  ;;  "stop")  stop  ;;  "status")  status  ;;  "restart")  restart  ;;  *)  usage  ;;  
esac

AI注释版

#!/bin/bash  
# 声明应用的名称和使用的端口号  
APP_NAME=ruoyi-admin.jar  
PORT=9021  # 假设应用绑定到这个端口  # 使用函数来显示脚本的使用方式,并退出脚本  
usage() {  echo "Usage: sh app.sh [start|stop|restart|status]"  exit 1  
}  # 检查应用是否已经在运行  
is_exist(){  # 使用 lsof 命令查找使用指定端口的进程ID,这里应该是 lsof 的拼写错误,应为 lsof 或 lsof 的替代品如 netstat、ss  pid=$(lsof -t -i :$PORT)  if [ -z "$pid" ]; then  # 如果 pid 为空,表示没有找到对应的进程,返回 1  return 1  else  # 如果找到了进程,返回 0  return 0  fi  
}  # 启动应用的函数  
start(){  # 检查应用是否已经在运行  is_exist  if [ $? -eq 0 ]; then  # 如果应用已经在运行,则输出提示信息  echo "${APP_NAME} is already running on port $PORT."  else  # 如果应用没有运行,则启动应用,并将输出重定向到 nobup.log 文件  # 注意:nohup 应该是 nohup 的拼写错误  nohup java -Xms256m -Xmx512m -jar $APP_NAME >nobup.log 2>&1 &  fi  
}  # 停止应用的函数  
stop(){  # 检查应用是否在运行  is_exist  if [ $? -eq 0 ]; then  # 如果应用在运行,则强制终止该进程  kill -9 $pid  # 输出停止应用的提示信息  echo "Stopped ${APP_NAME} running on port $PORT."  else  # 如果应用没有运行,则输出提示信息  echo "${APP_NAME} is not running on port $PORT."  fi  
}  # 检查应用状态的函数  
status(){  # 检查应用是否在运行  is_exist  if [ $? -eq 0 ]; then  # 如果应用在运行,则输出应用的运行状态和进程ID  echo "${APP_NAME} is running on port $PORT. Pid is $pid"  else  # 如果应用没有运行,则输出提示信息  echo "${APP_NAME} is NOT running on port $PORT."  fi  
}  # 重启应用的函数  
restart(){  # 停止应用  stop  # 启动应用  start  
}  # 根据传入的参数执行相应的操作  
case "$1" in  "start")  start  # 启动应用  ;;  "stop")  stop  # 停止应用  ;;  "status")  status  # 检查应用状态  ;;  "restart")  restart  # 重启应用  ;;  *)  usage  # 如果参数不正确,则显示使用方式  ;;  
esac

相关文章:

若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控

脚本使用说明: 启动应用:sh app.sh start停止应用:sh app.sh stop检查应用状态:sh app.sh status重启应用:sh app.sh restart 注意事项: 请确保你的系统上安装了 Java 环境,并且 ruoyi-admin…...

Unix运维_FreeBSD-13.1临时环境变量设置(bin和include以及lib)

Unix运维_FreeBSD-13.1临时环境变量设置(bin和include以及lib) 在 FreeBSD 系统上设置用户环境变量可以通过编辑用户的 Shell配置文件 来实现。 cshrc 与 csh_profile 的区别: cshrc: 每个脚本执行前都执行一遍这个脚本。 csh_profile: 根据不同使用者用户名, 会先去其 home…...

Apache Dolphinscheduler - 无需重启 Master-Server 停止疯狂刷日志解决方案

记录的是一个 3.0 比较难搞的问题,相信不少使用过 3.0 的用户都遇到过 Master 服务中存在一些工作流或者任务流一直不停的死循环的问题,导致疯狂刷日志。不过本人到现在也没找到最关键的触发原因,只是看到一些连锁反应带来的结果…… 影响因素…...

竞争优势:大型语言模型 (LLM) 如何重新定义业务策略

人工智能在内容创作中的突破 在当今快节奏的商业环境中,像 GPT-4 这样的大型语言模型 (LLM) 不再只是一种技术新颖性; 它们已成为重新定义跨行业业务战略的基石。 从增强客户服务到推动创新,法学硕士提供了企业不容忽视的竞争优势。 1. 加强…...

Spring AOP和AspectJ AOP区别

Spring AOP(Aspect-Oriented Programming)和 AspectJ AOP 是两种不同的 AOP 实现方式,它们在实现上有一些区别。下面是它们之间的主要区别: 基于代理 vs 字节码增强: Spring AOP: Spring AOP 是基于代理的…...

FREERTOS信号量详解

信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步,资源管理其实就是用变量来标记现有资源的数量,任务同步其实就是用标志位来控制任务的先后执行顺序,这些概念在操作系统中以及裸机开发中都有所涉及。 FreeR…...

每天学习一个Linux命令之vim

每天学习一个Linux命令之vim Vim是一款功能强大的文本编辑器,在Linux系统中广泛使用。本篇博客将介绍一些常用的Vim命令及其选项,帮助您更好地使用Vim进行文本编辑。 命令及选项 以下是Vim的常用命令及其可用选项: 1. 打开文件 $ vim fi…...

linux环境部署

war包环境 在Linux系统上部署准备war包环境 查看linux当前版本和系统类型 [rootlocalhost ~]# uname -a Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxlinux 打包文件夹 使用tar命令&#xff1…...

上位机图像处理和嵌入式模块部署(qmacvisual图像预处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 不管大家是在读书的时候学习的图像处理,还是在后来的工作中,重新学习了图像处理,相信大家对图像预处理的概念并…...

C语言内存函数详解

文章目录 前言一、memcpy函数(内存拷贝函数)二、memmove重叠拷贝函数三.memset内存设置函数四.memcmp内存比较函数总结 前言 我们之前按学习了C语言标准库中提供了一系列的字符和字符串库函数,接下来我们就学习一下关于内存相关的一些函数。…...

详解Redis的持久化RDB和AOF

Redis的持久化是将内存中的数据同步到硬盘的过程 具体来说,Redis支持两种主要的持久化方式:RDB 和 AOF。 RDB(Redis Database) 简介 默认持久化方式 RDB会将内存中的数据快照保存到磁盘上的一个二进制文件中。这个文件包含了…...

详细分析Js中的Promise.all基本知识(附Demo)

目录 1. 基本知识2. Demo3. 实战 1. 基本知识 Promise.all 是 JavaScript 中的一个方法,它接受一个由 Promise 对象组成的数组作为参数,并在所有 Promise 对象都变为 resolved(已完成)状态时才返回一个新的 Promise 对象&#xf…...

const,static深度总结——c++穿透式分析

前言;c类和对象的知识点中除了几种默认函数, 比较重要的还有使用const和static修饰成员相关知识点。const在c中特性很简单。 但是在使用中, 比较容易疏忽大意出现问题。 static特性也很简单, 但是比起const来要直接的多。 在使用中…...

快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录 flask_service —— app.py —— templates —— —— index.html app.py from flask import Flask, request, jsonify, render_template import random import matplotlib.pyplot as plt from io import BytesIO import base64app F…...

O2OA红头文件流转与O2OA版式公文编辑器基本使用

O2OA开发平台在流程管理中,提供了符合国家党政机关公文格式标准(GB/T 9704—2012)的公文编辑组件,可以让用户在包含公文管理的项目实施过程中,轻松地实现标准化公文格式的在线编辑、痕迹保留、手写签批等功能。并且可以…...

软件测试:C++ Google Test单元测试框架GTest

目录 编译和安装框架使用AssertionsGoogle TestingGoogle MockingMatchersActions 运行结果 最近在写项目的时候,学到了许多关于软件测试的知识,也不断的使用新的测试框架和测试工具,每次总是机械式的拼接其他人的代码,代码发生错…...

大数据面试题 —— HBase

目录 什么是HBase简述HBase 的数据模型HBase 的读写流程HBase 在写的过程中的region的split的时机HBase 和 HDFS 各自的使用场景HBase 的存储结构HBase 中的热现象(数据倾斜)是怎么产生的,以及解决办法有哪些HBase rowkey的设计原则HBase 的列…...

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…...

SpringMVC的执行原理

SpringMVC的执行原理可以简单地概括为以下几个步骤: 客户端发送请求:客户端(一般是浏览器)发送HTTP请求到服务器,请求特定的URL资源。 前端控制器(DispatcherServlet)接收请求:在Sp…...

Qt + HTTP 线程交互类封装

介绍 QT的HTTP模块封装的交互类&#xff0c;线程运行。使用时添加自己的业务逻辑即可 代码 头文件 /*** file httpcontroller.h* brief 云台相机的协议交互类* author xintong-zhou* date 2024-03-13*/#ifndef HTTPCONTROLLER_H #define HTTPCONTROLLER_H#include <QNet…...

ATF-54143 LNA设计复盘:我是如何权衡噪声、增益与稳定性的(附完整ADS工程)

ATF-54143 LNA设计复盘&#xff1a;噪声、增益与稳定性的深度权衡 在2.4GHz频段的低噪声放大器(LNA)设计中&#xff0c;工程师往往面临噪声系数、增益和稳定性之间的复杂权衡。本文将基于ATF-54143晶体管&#xff0c;分享我在实际项目中如何通过系统化的设计流程解决这些核心矛…...

STM32调试器大比拼:ST-LINK vs J-LINK vs DAP,哪个更适合你?

STM32调试器大比拼&#xff1a;ST-LINK vs J-LINK vs DAP&#xff0c;哪个更适合你&#xff1f; 在嵌入式开发的世界里&#xff0c;调试器就像外科医生的手术刀&#xff0c;是精准定位问题和修复代码的必备工具。对于STM32开发者来说&#xff0c;面对市面上琳琅满目的调试工具&…...

MATLAB建模与仿真:增程式电动汽车EREV的亏电到满电控制逻辑及整车模型闭环控制详解

MATLAB增程式电动汽车EREV MATLAB建模过程详细讲解和MATLAB模型 亏电到满电的控制逻辑 以及整车模型的闭环控制 特别是针对各个模式下离合器&#xff0c;发动机&#xff0c;电机和电池充放电的控制&#xff0c;在pdf给出了详细的说明 仿真结果清晰明确&#xff0c;纯手工搭建没…...

如何快速永久保存Jable视频?5步终极下载指南

如何快速永久保存Jable视频&#xff1f;5步终极下载指南 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 你是否曾经遇到过这样的困扰&#xff1a;在Jable.tv上发现了一个精彩的视频&#xff0c;想…...

一键下载网页视频:Video Download Helper 高效实用指南

一键下载网页视频&#xff1a;Video Download Helper 高效实用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页视频而…...

基于深度学习的YOLOv8智慧交通识别 车辆轨迹识别 目标检测研究分析软件 智能辅助驾驶交通分析

项目功能 交通物体检测与实例分割 本项目基于YOLOv8框架&#xff0c;能够对交通物体进行检测。对图片能检测到物体并用锚框进行标注展示&#xff0c;对于视频则是对每一帧进行物体检测分析&#xff0c;同样使用锚框进行标注&#xff0c;最终生成的物体检测视频能实时追踪物体并…...

从‘Access-Control-Allow-Origin’报错到实战:一次搞定OAuth 2.0授权接口的本地调试

从CORS报错到OAuth 2.0授权接口的本地调试实战指南 当你在本地开发环境中调用类似https://aip.baidubce.com/oauth/2.0/token这样的OAuth 2.0授权接口时&#xff0c;十有八九会遇到那个令人头疼的CORS错误。这不是一个普通的跨域问题&#xff0c;而是涉及OAuth安全机制与本地开…...

Resemble Enhance深度解析:如何用AI技术实现专业级语音增强与降噪

Resemble Enhance深度解析&#xff1a;如何用AI技术实现专业级语音增强与降噪 【免费下载链接】resemble-enhance AI powered speech denoising and enhancement 项目地址: https://gitcode.com/gh_mirrors/re/resemble-enhance Resemble Enhance是一款基于深度学习的专…...

从华数杯到数学建模:我是如何用CCR模型搞定“脱贫绩效评价”这道题的?

从华数杯到数学建模&#xff1a;我是如何用CCR模型搞定“脱贫绩效评价”这道题的&#xff1f; 凌晨三点的宿舍里&#xff0c;咖啡杯已经见底&#xff0c;我和队友盯着电脑屏幕上那道"脱贫帮扶绩效评价"的赛题面面相觑。这是2020年华数杯数学建模竞赛的C题&#xff0c…...

Vue+ElementUI后台管理系统:解决企业级应用快速部署难题的技术方案

VueElementUI后台管理系统&#xff1a;解决企业级应用快速部署难题的技术方案 【免费下载链接】vue-backend 简单的后台管理框架 项目地址: https://gitcode.com/gh_mirrors/vu/vue-backend 在数字化转型浪潮中&#xff0c;企业面临着后台管理系统开发周期长、维护成本高…...