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

news2024/10/20 20:03:02

一、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" ]; then
  echo "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; do
    echo "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.coloradmin.cn/o/2219533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java SE 】封装 的特性 和 static 详解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 封装的概念 1.1 一个例子 2. 访问权限控制符 3. 包的概念 3.1 import 导入 3.2 常见的包 4. static 静态成员 4.1 static 使用情况 4.2 static 修…

> Invalid revision: 3.22.1-g37088a8-dirty

Android项目使用cmake 3.22.1&#xff0c;编译时报错&#xff1a; > Invalid revision: 3.22.1-g37088a8-dirty解决方法一&#xff1a; 升级Gradle版本和AGP的版本&#xff1b; 建议使用AS推荐的版本&#xff1a; 目前可运行的版本配置&#xff1a; AS&#xff1a;Jel…

champ模型部署指南

一、介绍 champ是由阿里巴巴、复旦大学和南京大学的研究人员共同提出的一种基于3D的将人物图片转换为视频动画的模型&#xff0c;该方法结合了3D参数化模型(特别是SMPL模型)和潜在扩散模型&#xff0c;能够精确地捕捉和再现人体的3D形状和动态&#xff0c;同时保持动画的时间一…

读书读到NOBEL

最近在读陈逸鹤的《程序员的自我修养》这本书&#xff0c;里面有这么一段话&#xff1a; “远古时代的人们只能创造出用于猎捕的长矛&#xff0c;而今天借助来自各行各业人 们的智慧&#xff0c;我们可以制造出高铁、大型飞机&#xff0c;并探索宇宙。但要更进一步解决人类所面…

2024_E_100_连续字母长度

连续字母长度 题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母。 第二行为…

GPT-4o canvas不是对cursor的颠覆,而是人与AI交互的新探索

谈一下Openai新发布的canvas。 关于这个产品的介绍不多说了&#xff0c;网上已经有很多&#xff0c;主要谈下我对它以及相似竞品的比较&#xff0c;以及我的一些看法。 1、vs Claude Artifacts&#xff1a;是chatbot编程方面直接竞品&#xff0c;不过现阶段还是有很大的区别。…

二百六十八、Kettle——同步ClickHouse清洗数据到Hive的DWD层静态分区表中(每天一次)

一、目的 实时数仓用的是ClickHouse&#xff0c;为了避免Hive还要清洗数据&#xff0c;因此就直接把ClickHouse中清洗数据同步到Hive中就行 二、所需工具 ClickHouse&#xff1a;clickhouse-client-21.9.5.16 Kettle&#xff1a;kettle9.2 Hadoop&#xff1a;hadoop-3.1.3…

TH-OCR:强大的光学字符识别工具与车牌识别应用

在当今数字化的时代&#xff0c;高效准确地识别文本和图像中的字符变得至关重要。TH-OCR&#xff08;清华 OCR&#xff09;作为一款优秀的光学字符识别软件&#xff0c;以其卓越的性能和广泛的应用场景&#xff0c;受到了众多用户的青睐。其中&#xff0c;车牌识别功能更是在交…

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 首先新建基于Arduino UNO的protues工程&#xff0c;见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…

一、go入门

go入门 Go历史1.1 诞生时间1.2 里程碑1.3 团队核心人员 2. 为什么使用Go3. 安装Go5. 入门案例6. 开发工具 Go历史 1.1 诞生时间 Go 语言起源 2007 年&#xff0c;并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目&#xff0c;即相关员工利用…

MATLAB小波变换图像融合系统

二、应用背景及意义 本课题利用小波变换进行图像的融合&#xff0c;然后对融合的结果进行图像质量的评价。所谓小波变换图像融合就是对多个的信息目标进行一系列的图像提取和合成&#xff0c;进而可以获得对同一个信息目标的更为精确、全面、可靠的高低频图像信息描述。并且也…

Vue2项目-二进制流预览

一、docx文档 软件&#xff1a;docx-preview&#xff1b; 版本&#xff1a;"^0.1.20"&#xff1b; 1、安装docx-preview npm i docx-preview0.1.20 2、组件配置 <template><div ref"wordContainer"></div> </template><s…

java集合进阶篇-《泛型通配符及其练习》

个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、泛型通配符简要概述 基本概念 无界通配符 (?)&#xff1a; 上限通配符 (? extends T)&#xff1a; 下限通配符 (? super T)&#xff1a; 三、思考 四、综合练习 Animal类及其javabeen Cat类 Dog类 H…

04 设计模式-创造型模式-建造者模式

建造者模式是一种创建型设计模式&#xff0c;它允许你创建复杂对象的步骤与表示方式相分离。 建造者模式是一种创建型设计模式&#xff0c;它的主要目的是将一个复杂对象的构建过程与其表示相分离&#xff0c;从而可以创建具有不同表示形式的对象。 设计模式&#xff0c;最近…

1. 安装框架

一、安装 Laravel 11 框架 按照官方文档直接下一步安装即可 1. 安装步骤 2. 执行数据库迁移 在.env文件中提前配置好数据库连接信息 php artisan migrate二、安装 Filament3.2 参考 中文文档 进行安装 1. 安装 拓展包 composer require filament/filament:"^3.2" -W…

操作系统 和 初识进程

目录 操作系统&#xff08;OS&#xff09; 进程 操作系统&#xff08;OS&#xff09; 概念 操作系统即os&#xff0c;是一款软件。 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。 操作系统的本质是一种进行软硬件管理的软件 笼统的理解&#xf…

Linux服务器前后端项目部署vue+springboot—搭建服务器上的运行环境(JDK、Redis、MySQL、Nginx)

Linux服务器前后端项目部署—①搭建服务器上的运行环境 一、系统参数信息和使用工具 1、服务器信息 华为云 CenteOS7.8 64 配置信息&#xff1a;2核4G 2、使用工具 Xshell6 二、环境安装和配置 &#xff08;一&#xff09;JDK的下载和安装 1、创建一个新目录或者进入目…

『Mysql集群』Mysql高可用集群之读写分离(二)

前言 主从复制: 解决了Mysql的单点故障问题以及提高MySQL的整体服务性能. 读写分离: 解决的是数据库的读性能问题,分担主库的压力&#xff0c;提高系统的可用性和稳定性。 分库分表: 数据库分表可以解决单表海量数据的查询性能问题&#xff0c;分库可以解决单台数据库的并发…

Unity Apple Vision Pro 保姆级开发教程-准备阶段

视频教程&#xff1a; Unity PolySpatial 开发Apple Vision Pro教程, 三十分钟快速了解 Unity Vision Pro 中文课堂教程地址&#xff1a; Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 开发Apple Vision Pro 使用原生开发和unity 开发有什么区别 如果你的项目需要…

IT监控平台可视化:3D机房与设备监控的革新实践

在信息化高速发展的今天&#xff0c;IT运维行业面临着前所未有的挑战。随着数据中心规模的不断扩大和设备复杂度的日益提升&#xff0c;如何高效、准确地监控和管理这些设备&#xff0c;成为了运维团队亟待解决的问题。IT监控平台的可视化功能&#xff0c;尤其是3D机房与设备监…