Linux java jar启停脚本

news/2024/7/24 12:55:41 标签: java, linux, jar

这两个脚本主要用于管理Java应用程序的启停状态,方便快捷。

启用脚本

这段代码是一个shell脚本,它的目的是启动一个Java应用程序并检查其启动状态。

# 项目所在目录
PROJECT_OPTS=/opt/test

# 日志位置
LOG_OPTS=/opt/test/logs/log_info.log

# 启动程序
echo "$(date "+%Y-%m-%d %H:%M:%S") 开始启动 ........."  # 输出当前时间并显示开始启动的信息
nohup java -Djava.io.tmpdir=$PROJECT_OPTS/temp -jar $PROJECT_OPTS/test.jar >nohup.log 2>&1 &  # 使用nohup启动java程序,并将输出重定向到nohup.log文件中,2>&1表示将标准错误输出也重定向到标准输出

# 查询日志检测java程序是否启动成功
sleep 1s  # 等待1秒,给java程序一些启动时间
while [ -f $LOG_OPTS ]  # 当日志文件存在时
do
 current=`date +%Y-%m-%d\ %H:%M`  # 获取当前时间
 result=`grep "$current" $LOG_OPTS | grep "Started"`  # 在日志文件中查找包含当前时间和"Started"的关键字
 if [[ "$result" != "" ]]  # 如果找到了这样的关键字
 then
 echo "$(date "+%Y-%m-%d %H:%M:%S") 启动成功 ........."  # 输出当前时间并显示启动成功的信息
 break  # 结束循环
 else
 echo "$(date "+%Y-%m-%d %H:%M:%S") 正在启动,请稍等..."  # 输出当前时间并显示正在启动的信息
 sleep 5s  # 等待5秒,然后再次检查日志文件
 fi
done

这段脚本使用了一个while循环来检查日志文件,直到找到表示程序已经成功启动的关键词为止。在每次循环中,它都会输出当前的时间和状态信息,以便于监控程序的启动过程。

停用脚本

# 项目jar包所在目录
PROJECT_OPTS=/opt/test.jar

# 输出当前时间并显示查看$PROJECT_OPTS进程pid的信息
echo "$(date "+%Y-%m-%d %H:%M:%S") 查看$PROJECT_OPTS进程pid......"

# 使用ps命令查找含有$PROJECT_OPTS关键字的进程,排除掉grep和stop命令的进程,使用awk命令提取进程ID
ID=`ps -ef | grep "$PROJECT_OPTS" | grep -v "grep" | grep -v stop| awk '{print $2}'`

# 输出当前时间并显示停止$PROJECT_OPTS进程pid为$ID的信息
echo "$(date "+%Y-%m-%d %H:%M:%S") 停止$PROJECT_OPTS进程pid为$ID...."

# 使用kill命令停止进程ID为$ID的进程
kill $ID

这段代码的目的是查找并停止运行在系统中的某个指定jar包的进程。首先,它确定了项目jar包所在目录。然后,它使用ps -ef命令查找所有正在运行的进程,并通过grep过滤出包含项目jar包路径的进程。同时,它排除了使用grep命令本身的进程和名为stop的进程。最后,使用awk提取出这些进程的ID,并使用kill命令停止这些进程。


http://www.niftyadmin.cn/n/5115530.html

相关文章

【大模型的一些基本结论】

这里写自定义目录标题 LLama的一些基本结论 各个论文中给出一些观察显现,我们比摘要更简略地摘要一些文本大模型大佬地基本结论和观察到的现象 LLama的一些基本结论 由于大模型要作为服务,因而推理时间更重要。一个较小的、训练时间较长的模型最终会在…

10 创建型模式-原型模式

引言: 创建对象的五种方式: 通过new关键字通过Class类的newInstance()方法通过Constructor类的newInstance()方法利用Clone方法反序列化 Clone方法: 其实现方式正是通过调用 Object 类的 clone() 方法来完成。 protected native Object cl…

【第三天】C++类和对象进阶指南:从堆区空间操作到友元的深度掌握

一、new和delete 堆区空间操作 1、new和delete操作基本类型的空间 new与C语言中malloc、delete和C语言中free 作用基本相同 区别: new 不用强制类型转换 new在申请空间的时候可以 初始化空间内容 2、 new申请基本类型的数组 3、new和delete操作类的空间 4、new申请…

公司第一天——配置环境

1.配置jdk环境 jdk的配置环境 配置jdk 遇到的问题 C:\Program Files\Common Files\Oracle\Java\javapath C:\Program Files (x86)\Common Files\Oracle\Java\javapath这两个文件 中的要删除,不然全费费(有覆盖的情况) 2.配置node 配置 N…

Python处理路径神级命令pathlib.Path

我最早是从2017年开始使用Python的,初期从处理文件数据开始,多数情况下与各式各样的路径和文件操作打交道,一直使用import os下面的os.path.join等函数拼接路径。 最近在读新的Python代码的时候,发现已经有一些人采用pathlib.Path…

数据安全与PostgreSQL:最佳保护策略

在当今数字化时代,数据安全成为了企业不可或缺的一环。特别是对于使用数据库管理系统(DBMS)的组织来说,确保数据的完整性、保密性和可用性至关重要。在众多DBMS中,PostgreSQL作为一个强大而灵活的开源数据库系统&#…

js如何解决跨域问题?

🙂博主:锅盖哒 🙂文章核心:js如何解决跨域问题? 目录 前言:跨域问题的本质 详解:跨域问题的原因和限制 跨域问题的限制包括: 用法:解决跨域问题的方法 1. JSONP(J…

Java方法调用动态绑定(多态性)详解

CONTENTS 1. 方法调用绑定2. 尝试重写Private方法3. 字段访问与静态方法的多态4. 构造器内部的多态方法行为 1. 方法调用绑定 我们首先来看下面这个例子: package com.yyj;enum Tone {LOW, MIDDLE, HIGH; }class Instrument {public void play(Tone t) {System.ou…