编写Shell脚本监控jar运行状态

2023-05-16

1,创建一个shell文件,编辑内容如下

#!/bin/bash
port=10009 
jar_name=/home/data/myqxin/hpmis-0.0.1-SNAPSHOT.jar

#运行脚本提示信息
tips(){
 echo "------------------"
 echo ""
 echo "服务器端口:${port}"
 echo "jar包路径:${jar_name}"
 echo ""
 echo "可执行命令参数"
 echo "-status -查看当前服务运行状态"
 echo "-start -启动服务"
 echo "-stop -停止服务"
 echo "-restart -重启服务"
 echo ""
 echo "------------------"
}

#查询状态
status(){
  #查询端口的PID {print $7{取出打印的第7个值
  pid=$(netstat -nlp |grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
  #判断端口是否被占用
  if [ -z "${pid}" ];then
	echo "没有项目在运行"
  else
  	echo "项目正在运行"	  
  fi
}

#启动服务
start(){
  pid=$(netstat -nlp |grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
  if [ -z "${pid}" ];then
	echo "正在启动......"
	/home/data/jdk/bin/java -jar $jar_name --spring.profiles.active=test > log.log &
  else
	echo "项目运行中或端口已被占用"
  fi
}

#停止服务
stop(){
  pid=$(netstat -nlp |grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
  if [ -z "${pid}" ];then
	echo "没有项目正在运行,请先启动"
  else
	kill -9 $pid
	echo "已杀死端口为${port} 的应用"
  fi
}

#重启服务
restart(){
  pid=$(netstat -nlp |grep :$port | awk '{print &7}' | awk -F"/" '{ print $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

2,赋予脚本权限

chmod 777 xxx.sh

3,执行演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

编写Shell脚本监控jar运行状态 的相关文章

  • 运行 JAR 时“JCE 无法验证提供者 BC”

    在我的 scala 项目中我使用 org bouncycastle bcprov jdk14 1 51 用于密码学 如果它在 Scala IDE 中测试我的项目 它工作得很好 但是一旦我制作了一个 JAR 并尝试通过以下方式运行它java
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • 如何在intelliJ idea中创建java包的jar

    我需要创建一个包含模块内部包中已编译类的 jar 我有一个 jar 文件 它实际上是模块内部的一个包 我需要重新创建它 我可以创建整个模块的 jar 但无法创建包的 jar 文件 我怎样才能按照想法做到这一点 Intellij IDEA 2
  • 在 Jar 中为 Gluon Scene Builder 11.00 创建自定义控件

    我想在可执行 jar 文件中创建自定义控件 然后在 Gluon Scene Builder 11 00 中使用 我需要知道如何做到这一点 我尝试了几种形式 但在场景生成器中导入 jar 时我的控件没有出现 我正在使用 IntelliJ Co
  • 如何复制每个扩展名为 X 的文件,同时保留原始文件夹结构? (类Unix系统)

    我正在尝试将每个 HTML 文件从 src 文件夹复制到 dist 文件夹 但是 我想保留原始文件夹结构 如果 dist 文件夹不存在 我想创建一个新文件夹 如果文件夹不存在则创建 d dist mkdir dist 复制每个文件 cp R
  • 列出破折号中当前定义的函数?

    我想列出当前定义的函数dash 有什么办法可以做到这一点吗 我能想到的最接近的是type它可以用来测试一个函数是否存在 但除此之外我很困惑 附 我说的是dash在这里 不是bash or zsh 看看 exec c 似乎没有 没有 表是静态
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 在 shell 脚本中连接命令字符串

    我正在维护一个现有的 shell 脚本 它将命令分配给 shell 脚本中的变量 例如 MY COMMAND bin command dosomething 然后接下来 它通过执行以下操作将 参数 传递给 MY COMMAND MY ARG
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 如何在 Xcode 4.2 中创建 Shell 脚本目标?

    我想知道是否有人知道 XCode 4 1 如何创建 shell 脚本 该选项不存在 但在最新版本中可能会被称为其他名称 塔 在导航器中选择您的项目 单击 添加目标 为空目标选择 聚合 添加构建阶段 gt 添加运行脚本 单击构建阶段并编辑运行
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 如何在lua中获取shell脚本的返回码?

    我正在lua中执行一个脚本 os execute sh manager scripts update system sh f 我想获得脚本的输出 如果退出状态为 7 则返回 7 I tried local output os execute
  • bash 变量中的 Linux 鞭尾/对话框参数错误

    有人可以解释为什么下面的代码不起作用吗 我要疯狂地想找出答案 bin bash TEST M1 1 wire Interface ON echo TEST RESULT dialog title Config Modules State c
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 仅当重复行与模式匹配时才删除它们

    这个问题 https stackoverflow com questions 1444406 how can i delete duplicate lines in a file in unix有一个很好的答案说你可以使用awk seen
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • shell脚本中的\r字符

    我在尝试执行 shell 脚本时收到以下错误 r command not found line 2 请提出同样的解决方案 以下是脚本中使用的初始行 bin sh if lt 1 then echo ERROR Environment arg

随机推荐

  • Datawhale数据分析第一章第一节:数据载入及初步观察

    复习 这门课程得主要目的是通过真实的数据 xff0c 以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作 知道了课程的目的之后 xff0c 我们接下来我们要正式的开始数据分析的实战教学 xff0c 完成kaggle上泰坦尼克
  • VsCode使用相关

    1 解决VsCode控制条使用powershell问题 xff1a set ExecutionPolicy RemoteSigned 2 解决使用yarn安装报版本依赖问题 可升级依赖或忽略 yarn install ignore engi
  • python之Tkinter使用详解

    一 前言 1 1 Tkinter是什么 Tkinter 是使用 python 进行窗口视窗设计的模块 Tkinter模块 Tk 接口 是Python的标准Tk GUI工具包的接口 作为 python 特定的GUI界面 xff0c 是一个图像
  • 实现使用libevent库创建服务器连接多个客户端并实现数据互发

    需要的头文件包含c库 Unix系统库和envent事件库 include lt sys types h gt include lt sys socket h gt include lt netinet in h gt include lt
  • 基于libevent库实现http-sever-restful-API

    文章目录 一 环境搭建 xff1a 1 编译libevent 2 1 11 stable2 cJSON库 二 makefile三 code四 测试测试结果如下 xff1a 一 环境搭建 xff1a 参考 xff1a https blog c
  • vscode通过跳板机连接远程服务器(亲测可用)

    一 windows用户需要先配置好本地的Remote SSH相关服务并开启服务 二 打开VS Code xff0c 在扩展中搜索 34 Remote SSH 34 并安装 三 ctrl 43 shift 43 p呼出控制面板搜索remote
  • 如何抓取log

    一 Catcher log Catcher是 MTK 提供的功能机上一个功能比较强大的一个 log 工具 Catcher log 一般情况下使我们使用起来最多也最方便的一种 xff0c 不用跳线 xff0c 连接上 USB 就行 Catch
  • android studio (record audio)一些问题记录

    2022 03 29 19 23 16 253 1659 1706 E Request requires android permission RECORD AUDIO 2022 03 29 19 23 16 253 1659 1706 E
  • 向量的点乘和叉乘

    向量是由n个实数组成的一个n行1列 xff08 n1 xff09 或一个1行n列 xff08 1n xff09 的有序数组 一 向量的点乘 也叫向量的内积 数量积 xff0c 对两个向量执行点乘运算 xff0c 就是对这两个向量对应位一一相
  • C语言 生产者消费者问题

    目录 生产者消费者问题算法设计实现源程序测试日志总结 生产者消费者问题 算法设计 实现 1 编写所需头文件 span class token macro property span class token directive keyword
  • 操作系统-进程同步:生产者-消费者问题

    文章目录 进程同步 xff1a 生产者 消费者问题问题描述实验环境输入输出测试数据实验设计数据结构系统框架图流程图 实验结果与分析结果展示与描述结果分析总结 源代码 进程同步 xff1a 生产者 消费者问题 问题描述 以生产者 消费者模型为
  • 《动手学习深度学习》预备知识——自动求导

    自动微分 正如我们在 numref sec calculus中所说的那样 xff0c 求导是几乎所有深度学习优化算法的关键步骤 虽然求导的计算很简单 xff0c 只需要一些基本的微积分 但对于复杂的模型 xff0c 手工进行更新是一件很痛苦
  • Ubuntu—root用户权限设置

    Ubuntu root用户权限设置 本人ubuntu版本 xff1a 18 04 xff08 其他版本设置步骤相同 xff09 Step1 获得临时root权限 xff08 1 xff09 terminal中输入命令 xff1a sudo
  • matlab 自写 自适应中值滤波 matlab自适应中值滤波算法

    一 自适应中值滤波 xff08 代码 xff09 function aOut 61 stPlus aIn f1 f2 st stMax 这仅仅是 AdaMedFilter 自适应中值滤波函数 的子函数 这仅仅是一个附属函数 功能片段 xff
  • 使用@RequestBody传递多个不同对象

    64 RequestBody 主要用来接收前端传递给后端的json字符串中的数据的 请求体中的数据的 xff1b GET方式无请求体 xff0c 所以使用 64 RequestBody接收数据时 xff0c 前端不能使用GET方式提交数据
  • 解决No converter for [class org.jeecg.common.api.vo.Result] with preset Content-Type ‘multipart/form-d

    我们在下载文件的时候 xff0c 会对contentType进行设置 比如我这里设置的是 xff1a response span class token punctuation span span class token function
  • Linux安装Nginx(超详细步骤)

    1 xff0c 进入官网下载Nginx资源 官网下载 xff1a http nginx org en download html 2 xff0c 资源下载 xff08 因为是在Linux安装 xff0c 所以我下载Linux安装的资源包 x
  • Linux安装tomcat(超详细步骤)

    1 xff0c 安装前置条件 安装Tomcat需要先安装jdk xff0c 没有安装jdk的 xff0c 先移步到这里安装jdk xff0c 详见参考文章 2 xff0c 下载所需压缩包 xff0c 上传到服务器 官网下载地址 xff1a
  • 解决虚拟机启动报:此主机支持AMD-V,但AMD-V处于禁用状态

    开启VMware虚拟机弹出以下异常 解决方法 xff1a 将SVM Mode设置成允许 解决步骤 xff1a 1 xff0c 将电脑关机 xff0c 然后进行启动 xff0c 启动过程中多按delete xff08 f1或者f2 xff0c
  • 编写Shell脚本监控jar运行状态

    1 xff0c 创建一个shell文件 xff0c 编辑内容如下 span class token shebang important bin bash span span class token assign left variable