java--通用启动/停止shell脚本
脚本
#!/bin/bash# 定义超时时间(秒)
timeout=10# 检查命令参数
case "$1" instart|stop|restart|help)action="$1"jar_file="$2";;*)echo "Usage: $0 {start|stop|restart|help} [jar_file]"exit 1;;
esac# 定义 .jar 文件的路径
if [[ -z "$jar_file" ]]; then# 如果没有传入路径,则查找当前目录下的 .jar 文件jar_files=$(ls *.jar 2>/dev/null)# 检查是否找到了 .jar 文件if [[ -z "$jar_files" ]]; thenecho "No .jar file found in the current directory."exit 1fi# 检查是否找到了多个 .jar 文件if [[ $(echo "$jar_files" | wc -w) -gt 1 ]]; thenecho "Multiple .jar files found in the current directory, please specify one."exit 1fijar_file="$jar_files"
fi# 检查 .jar 文件名称是否以 .jar 结尾
if [[ ! "$jar_file" =~ \.jar$ ]]; thenecho "Error: The specified file '$jar_file' does not end with '.jar'."exit 1
fi# 获取 .jar 文件的绝对路径
absolute_path_jar_file=$(readlink -f "$jar_file")# 获取 Java 版本信息
java_version=$(java -version 2>&1 | awk 'NR==1{print $3}')# 定义启动命令
start_command="java -Xms128m -Xmx512m -jar $absolute_path_jar_file >/dev/null 2>&1 &"# 定义 start 函数
start() {# 检查进程是否已经在运行pid=$(pgrep -f "$absolute_path_jar_file")if [[ ! -z "$pid" ]]; thenecho "Process $absolute_path_jar_file is already running with PID $pid."return 1fi# 输出 Java 版本信息echo "Using Java version: $java_version"# 启动进程echo "Starting process $absolute_path_jar_file..."eval "$start_command"pid=$(pgrep -f "$absolute_path_jar_file")echo "Process $absolute_path_jar_file started successfully with PID $pid"
}# 定义 stop 函数
stop() {# 查找进程 IDpid=$(pgrep -f "$absolute_path_jar_file")if [[ -z "$pid" ]]; thenecho "No running processes found with name '$absolute_path_jar_file'."return 1fi# 发送 SIGTERM 信号echo "Sending SIGTERM to process $absolute_path_jar_file with PID $pid..."kill -15 "$pid"# 等待进程终止echo "Waiting for process $absolute_path_jar_file with PID $pid to terminate..."sleep "$timeout"# 检查进程是否已经终止if pgrep -f "$absolute_path_jar_file" > /dev/null 2>&1; then# 进程仍在运行,发送 SIGKILL 信号echo "Process $absolute_path_jar_file with PID $pid did not terminate within $timeout seconds. Sending SIGKILL..."kill -9 "$pid"elseecho "Process $absolute_path_jar_file with PID $pid terminated gracefully."fi
}# 根据命令执行相应操作
case "$action" instart)start;;stop)stop;;restart)stopstart;;help)echo "Usage: $0 {start|stop|restart|help} [jar_file]"exit 0;;*)echo "Usage: $0 {start|stop|restart|help} [jar_file]"exit 1;;
esac
使用方法
当前目录仅有1个jar文件时,两种方式都可以:
./service.sh start
./service.sh stop
./service.sh restart./service.sh start demo.jar
./service.sh stop demo.jar
./service.sh restart demo.jar当前目录有多个jar文件时,必须指定jar:
./service.sh start demo.jar
./service.sh stop demo.jar
./service.sh restart demo.jar
相关文章:
java--通用启动/停止shell脚本
脚本 #!/bin/bash# 定义超时时间(秒) timeout10# 检查命令参数 case "$1" instart|stop|restart|help)action"$1"jar_file"$2";;*)echo "Usage: $0 {start|stop|restart|help} [jar_file]"exit 1;; esac# 定义…...
Flutter-底部选择弹窗(showModalBottomSheet)
前言 现在有个需求,需要用底部弹窗来添加定时的重复。在这里使用原生的showModalBottomSheet来实现 showModalBottomSheet的Props 名称 描述 isScrollControlled全屏还是半屏isDismissible外部是否可以点击,false不可以点击,true可以点击&a…...
Linux——k8s认识
计算资源隔离 - 更方便进行高并发架构的维护和升级 - 架构管理的灵活性更高,不再以单个节点的物理资源作为基础 技术: - 硬件辅助虚拟化 - 容器技术 在企业部署方案中,很少以单节点实现虚拟化和容器技术,一般以集群状态来运…...
EC Shop安装指南 [ Apache PHP Mysql ]
这个是软件测试课上老师布置的一个作业,期间老师也出现了不少错误,所以还是有必要记录一下吧,凑一篇文章 主要是老师的文档以及自己的一些尝试记录,试错记录,解决方案等 主要介绍了Apache的安装,MySQL的安…...
无线感知会议系列【3】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-1】
前言: 2020年北京智源大会 张大庆老师的一个报告 参考链接: 基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用_哔哩哔哩_bilibili 目录: 无线感知简介 无线感知的核心 研究方向 Frsenel 模型 基于Fresnel 感知的应用举例…...
Virtuoso服务在centos中自动停止的原因分析及解决方案
目录 前言1. 问题背景2. 原因分析2.1 终端关闭导致信号12.2 nohup命令的局限性 3. 解决方案3.1 使用 screen 命令保持会话3.2 使用 tmux 作为替代方案3.3 使用系统服务(systemd) 4. 其他注意事项4.1 网络配置4.2 日志监控 结语 前言 在使用Virtuoso作为…...
泽众P-One性能测试平台火焰图帮助定位产品性能问题
在软件开发过程中,性能问题往往是最头疼的问题之一。随着软件系统的日益复杂,快速准确地定位并解决性能问题变得尤为重要。泽众P-One作为一站式性能测试平台,通过引入火焰图性能分析可视化工具,极大地提升了性能问题的定位效率和解…...
数据结构修炼——顺序表和链表的区别与联系
目录 一、线性表二、顺序表2.1 概念及结构2.2 接口实现2.3 一些思考以及顺序表的缺点 三、链表3.1 概念及结构3.2 链表的分类3.3 链表的实现3.3.1 无头单向非循环链表3.3.2 带头双向循环链表 四、顺序表和链表的区别 一、线性表 线性表(linear list)是n…...
AD9854 为什么输出波形幅度受限??
🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...
在grafana上配置显示全部node资源信息概览
在grafana上配置显示全部node资源信息概览,便于巡检 1,注册grafana官网账号:Grafana dashboards | Grafana Labs 2、寻找可以展示所有node资源概览信息的dashboard,并下载支持prometheus数据源的dashboardÿ…...
MySQL —— 索引
索引的概念 MySQL的索引是⼀种数据结构,它可以帮助数据库高效地查询、更新数据表中的数据。索引通过 ⼀定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。 MySQL索引类似于书籍的目录,通过指向数据行的位置&…...
(已解决)vscode如何选择python解释器
文章目录 前言解决方案 前言 有的时候可能有不同版本的编译器,以适用不同年份的项目。所以,怎么在vscode中换python解释器呢? 解决方案 对着要运行的python文件进行右键,比如我是要运行main文件,点击那个命令选项版…...
sql刷题常用函数
ROW_NUMBER() ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) 是一个窗口函数,用于生成每个分组内的唯一行号。这个函数非常适合在分组数据中进行排序,并为每一行分配一个序号。下面是对你的具体示例的详细解释: ROW_NUMBER() OVER (…...
Golang | Leetcode Golang题解之第417题太平洋大西洋水流问题
题目: 题解: type pair struct{ x, y int } var dirs []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func pacificAtlantic(heights [][]int) (ans [][]int) {m, n : len(heights), len(heights[0])pacific : make([][]bool, m)atlantic : make([][]bool, …...
Acwing Hash表
哈希表的作用:把一个比较大的空间,通过一个函数映射到一个比较小的空间 一般做哈希运算时,取一个质数作为模,会使得冲突的概率降低。 哈希表的冲突解决方法: 拉链法开放寻址法 下面详细介绍这两种方法的原理及其实现…...
大健康裂变分销小程序开发
大健康裂变分销小程序的开发是一个涉及技术、市场策略、用户体验和合规性等多个方面的综合项目。这类小程序旨在通过分销机制促进大健康产品的销售和品牌推广,同时利用社交网络的裂变效应扩大市场影响力。以下是大健康裂变分销小程序开发的主要步骤和考虑因素&#…...
js取出一个对象中指定的字段(封装公共方法)
需求:在一个对象里面挑选出所需要的一个或多个字段 例子:在{ a: 1, b: 2, c: 3, d: 4 }里面挑选出b和d字段 封装公共方法 const pick (obj, keys) > {return Object.keys(obj).filter(key > keys.includes(key)).reduce((result, key) > {if …...
【黑马点评】已解决java.lang.NullPointerException异常
Redis学习Day3——黑马点评项目工程开发-CSDN博客 问题发现及描述 在黑马点评项目中,进行到使用Redis提供的Stream消息队列优化异步秒杀问题时,我在进行jmeter测试时遇到了重大的错误 发现无论怎么测试,一定会进入到catch中,又由…...
计算机专业的就业方向
计算机专业的就业方向 亲爱的新生们,欢迎你们踏上计算机科学的旅程!作为一名计算机专业的学生,你们即将进入一个充满无限可能的领域。今天,我将为大家介绍计算机专业的一些主要就业方向,帮助你们了解未来的职业选择。…...
VSCode C++ Tasks.json中的变量
前言 上文介绍了在VSCode中创建C项目和编译多文件的情况。本文将介绍Tasks.json中一些变量的含义; 内容 tasks.json文件 下文参考VSCode文档:Visual Studio Code 变量参考 预定义标量 ${userHome} - 用户主文件夹的路径${workspaceFolder} - 在 VS Co…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
