java -jar 命令自动重启 Java 项目

一、java -jar 方式运行项目

重启Java项目通常意味着你需要先停止当前运行的Java进程,然后再次启动它。下面是在CentOS上执行这些步骤的一种常见方法:

停止Java进程

  1. 找到Java进程的PID:

    使用ps命令配合grep来查找运行中的Java进程的PID(进程ID)。

    ps aux | grep 'java -jar'
    

    这会列出所有Java进程,你需要找到对应你的jar文件的进程。

  2. 杀掉Java进程:

    使用kill命令来停止该Java进程,将<PID>替换为实际的进程ID。

    kill <PID>
    

    如果kill命令没有停止该进程,可以尝试使用更强制的命令:

    kill -9 <PID>
    

启动Java进程

在成功停止Java进程后,你可以使用java -jar命令重新启动你的项目。如果你希望在后台运行该进程,并将日志输出到文件中,可以使用以下命令:

nohup java -jar /changyou/mfefficiencycontrol-backend-1.0.0.jar > /changyou/develop/logs/logfile.log 2>&1 &nohup java -jar /changyou/blog-api-1.0.0.jar > /changyou/develop/logs/blog-api-logfile.log 2>&1 &

这里的nohup命令会防止进程在终端关闭时被终止,&会将进程放到后台运行。日志文件会将标准输出和错误输出都重定向到指定的日志文件中。

请确保将/path/to/your/application.jar替换为你的jar文件的实际路径,以及将/path/to/logfile.log替换为你希望输出日志的文件路径。

自动化脚本

如果你需要频繁地进行这个操作,可以考虑编写一个简单的shell脚本来自动化这个过程:

#!/bin/bash# 找到并杀掉旧的Java进程
PID=$(ps aux | grep 'java -jar' | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; thenecho "Stopping Java process with PID: $PID"kill $PID# 等待进程完全停止while ps -p $PID > /dev/null; do sleep 1; done
fi# 启动新的Java进程
echo "Starting Java application..."
nohup java -jar /path/to/your/application.jar > /path/to/logfile.log 2>&1 &
echo "Java application started with new PID: $!"

确保将脚本中的路径替换为实际的jar文件和日志文件路径。保存这个脚本,给它执行权限:

chmod +x /path/to/your/script.sh

之后,你就可以通过运行这个脚本来重启你的Java项目了。

二、失败后自动重启

要优化这个命令以确保在 Java 应用程序失败后自动重启,可以使用一个简单的 shell 脚本来实现。这个脚本会监控 Java 应用程序的状态,如果它退出或崩溃,脚本会重新启动它。

以下是一个示例脚本,该脚本会无限循环地运行你的 Java 应用程序,并在它退出后重新启动:

#!/bin/bash# 定义一些变量
JAR_PATH="/changyou/blog-api-1.0.0.jar"
LOG_PATH="/changyou/develop/logs/blog-api-logfile.log"# 无限循环,确保应用程序在退出后自动重启
while true; doecho "Starting Java application..."nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 &JAVA_PID=$!# 等待 Java 应用程序退出wait $JAVA_PID# 打印重启信息echo "Java application exited with status $?. Restarting..."# 等待几秒钟再重启(可选)sleep 5
done

使用步骤:

  1. 创建脚本文件
    创建一个新的脚本文件,例如 start_blog_api.sh

    nano start_blog_api.sh
    
  2. 粘贴上述脚本内容
    将上述脚本内容粘贴到 start_blog_api.sh 文件中。

  3. 保存并退出编辑器
    Ctrl + X,然后按 Y 保存并退出。

  4. 赋予脚本执行权限
    使脚本可执行:

    chmod +x start_blog_api.sh
    
  5. 运行脚本
    运行这个脚本来启动 Java 应用程序并确保它在失败后自动重启:

    ./start_blog_api.sh
    

说明:

  • 该脚本使用 while true 无限循环来确保 Java 应用程序在退出后自动重启。
  • nohup 命令用于在后台运行 Java 应用程序,并将输出重定向到指定的日志文件。
  • wait 命令用于等待 Java 应用程序进程退出。
  • 当 Java 应用程序退出时,脚本会打印退出状态并等待 5 秒钟(可选)后重新启动应用程序。

通过这个脚本,你可以确保你的 Java 应用程序在任何情况下都会自动重启,从而提高其可靠性和可用性。

最后编辑于:2024-10-01 17:52:47


喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452883.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于WPF项目降低.Net版本

本来有项目是.NET Framework 4.8的&#xff0c;为了兼容升级到.NET 8.0&#xff0c;后期又为了兼容放弃.NET 8.0&#xff0c;升级的步骤&#xff1a;利用vs2022 的 .NET Upgrade Assistant 扩展&#xff0c;磕磕绊绊也升级完成了&#xff1b; 扩展链接&#xff1a; Upgrading…

windows下安装VirtualBox7.1.4

记录详细的安装过程与遇到的问题&#xff1b; 下载地址 virtualbox官网 清华镜像源下载 下载完成后文件&#xff1a; 双击打开&#xff1b; 报错了 意思是需要pc上先安装Microsoft Visual C 2019 https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redi…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…

2024java高频面试之JVM

说说 JVM 内存区域 程序计数器 是「程序控制流的指示器&#xff0c;循环&#xff0c;跳转&#xff0c;异常处理&#xff0c;线程的恢复等工作都需要依赖程序计数器去完成」。程序计数器是「线程私有」的&#xff0c;它的「生命周期是和线程保持一致」的&#xff0c;我们知道&a…

【STM32开发笔记】移植AI框架TensorFlow【DSP指令加速篇】

【STM32开发笔记】移植AI框架TensorFlow【DSP指令加速篇】 一、前文回顾二、CMSIS-NN简介2.1 为什么介绍CMSIS-NN&#xff1f;2.2 CMSIS-NN是什么&#xff1f;2.3 CMSIS-NN核心特性2.4 CMSIS-NN算子支持 三、TFLMCMSIS-NN集成3.1 包含TFLM的STM32项目3.2 理解TFLM中CMSIS-NN相关…

【前端学习】HTML+CSS+JavaScript 入门教程

文章目录 前言1. HTML、CSS、JavaScript 的关系2. HTML2.1 什么是 HTML2.2 认识标签2.3 HTML 常见标签1&#xff09;标题标签&#xff1a;h1 - h62&#xff09;段落标签&#xff1a;p3&#xff09;换行标签&#xff1a;br4&#xff09;图片标签&#xff1a;img5&#xff09;超链…

Linux系统:(Linux系统概述与安装)

硬件计算机硬件是指计算机系统中所有物理部件的总称。包括计算机主机、显示器、键盘、鼠标、内存、硬盘、处理器、主板等等。这些硬件部件是计算机系统运行的基础 不管是电脑系统(个人电脑、服务器等)、还是移动端操作系统(手机、平板等)。它的功能就是做为用户和硬件之间的桥梁…

Java配置 Redis 连接互斥锁或队列预先加载缓存

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

2024年龙信

挂载VC的密码&#xff1a;MjAyNOmmeS/oeadrw 手机取证 1. Android 设备在通过 ADB 连接时&#xff0c;通常会要求用户授权连接&#xff0c;会要求用户确认设备授权&#xff0c;并将该设备的公钥保存在 adb_keys文件中 寻找到data/misc/adb/adb_keys下面有中有两个&#xff0c;…

动态规划:17.简单多状态 dp 问题_买卖股票的最佳时机III_C++

题目链接&#xff1a; 一、题目解析 题目&#xff1a;123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; 解析&#xff1a; 拿示例1举例&#xff1a; 我们可以如图所示买入卖出股票&#xff0c;以求得最大利润&#xff0c;并且交易次数不超过2次 拿示…

webpack自定义插件 ChangeScriptSrcPlugin

插件文件 class ChangeScriptSrcPlugin {apply(compiler) {const pluginName "ChangeScriptSrcPlugin";compiler.hooks.compilation.tap(pluginName, (compilation, callback) > {compilation.hooks.htmlWebpackPluginAlterAssetTags.tapAsync(pluginName,(html…

N9305高品质mp3音频语音芯片ic在早教故事机的应用方案

随着人们对教育的重视程度不断提高&#xff0c;儿童早教机已经成为了很多家庭的教育必备品。N9305音乐芯片在早教故事机中的应用&#xff0c;不仅为孩子们带来了丰富多彩的故事世界&#xff0c;还以其卓越的音质表现和功能&#xff0c;进一步提升了早教体验。 九芯电子N9305高品…

HarmonyOS Next模拟器异常问题及解决方法

1、问题1&#xff1a;Failed to get the device apiVersion. 解决方法&#xff1a;关闭模拟器清除用户数据重启

Kafka之消费者组与消费者

消费者&#xff08;Consumer&#xff09;在Kafka的体系结构中是用来负责订阅Kafka中的主题&#xff08;Topic&#xff09;&#xff0c;并从订阅的主题中拉取消息后进行处理。 与其他消息中间件不同&#xff0c;Kafka引入一个逻辑概念——消费组&#xff08;Consumer Group&…

黑马程序员Java笔记整理(day03)

1.switch 2.for与while对比 3.嵌套定义,输出的区别性 4.break与continue 5.随机数生成的两种方式 6.Random 7.随机验证码

15分钟学Go 第2天:安装Go环境

第2天&#xff1a;安装Go环境 1. 引言 在学习Go语言之前&#xff0c;首先需要配置好本地开发环境。本节将详细介绍如何在Windows 11上安装和配置Go语言环境&#xff0c;包括安装步骤、环境变量设置、VS Code配置与测试、以及常见问题解决方案。完成这些步骤后&#xff0c;你将…

【计算机网络 - 基础问题】每日 3 题(四十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

基于模型设计的智能平衡移动机器人-基础实验SCI

目录 SCI通信 模型搭建 串口测试 实验结果 SCI通信 简单来说就是信号的传递。 SCI&#xff08;Serial Communication Interface)意为“串行通信接口”&#xff0c;是相对于并行通信的&#xff0c;是串行通信技术的一种总称&#xff0c;最早由Motorola公司提出的。它是一…

Web Storage:数据储存机制

前言 在HTML5之前&#xff0c;开发人员一般是通过使用Cookie在客户端保存一些简单的信息的。在HTML5发布后&#xff0c;提供了一种新的客户端本地保存数据的方法&#xff0c;那就是Web Storage&#xff0c;它也被分为&#xff1a;LocalStorage和SessionStorage&#xff0c;它允…

【QT】常用控件(三)

个人主页~ 常用控件&#xff08;一&#xff09;~ 常用控件&#xff08;二&#xff09;~ QT中其他线程是改变不了GUI上的内容的&#xff0c;只有主线程可以 常用控件 四、显示类控件2、LCD Number3、ProgressBar4、Calendar Widget 五、输入类控件1、Line Edit正则表达式 2、Te…