CentOS如何彻底停止一个正在后台运行的jar包?

在服务器运维过程中,管理正在运行的 Java 应用程序是一项常见任务,当应用以 JAR 包的形式部署在 CentOS 系统上时,我们时常需要对其进行停止操作,例如为了更新版本、释放系统资源或进行故障排查,本文将详细介绍在 CentOS 系统中停止运行 JAR 包的几种主流方法,从基础的进程查杀到优雅的服务管理,并提供最佳实践建议。

CentOS如何彻底停止一个正在后台运行的jar包?

常规方法:查找进程并终止

这是最直接的方法,适用于通过 nohup java -jar ... & 等命令直接启动的 JAR 程序,其核心分为两步:找到进程,然后终止它。

查找 Java 进程 ID (PID)

在终止进程之前,必须先获取其唯一的进程标识符(PID),以下是几种常用的查找方式:


  • 这是最经典的方法。ps aux 会列出所有正在运行的进程,然后通过管道 将结果传递给 grep,筛选出包含你的 JAR 包名的行。

    ps aux | grep your-application.jar

    输出结果中,第二列就是 PID。grep 命令本身也会出现在列表中,通常可以通过 grep -v grep 来过滤掉它,或者直接识别目标进程。


  • jps(Java Virtual Machine Process Status Tool)是 JDK 自带的一个小工具,专门用于列出 Java 进程,非常简洁。

    jps -l

    -l 参数会显示完整的包名或 JAR 文件名,方便你识别,输出的第一列即为 PID。


  • 如果你知道 JAR 应用监听的端口号(8080),可以使用 lsof(List Open Files)来查找占用该端口的进程。

    CentOS如何彻底停止一个正在后台运行的jar包?

    lsof -i :8080

    命令输出中,PID 这一列会明确显示进程 ID。

终止进程

获取 PID 后,就可以使用 kill 命令来终止进程。


  • kill 命令默认发送 TERM 信号(信号编号 15),它会请求进程正常退出,这允许应用程序完成当前正在处理的任务、关闭资源、保存状态,是一种“优雅”的停止方式。

    kill <PID>
    # kill 12345

  • 如果进程无响应,无法通过 kill 命令正常停止,可以使用 kill -9,它发送 KILL 信号(信号编号 9),会立即终止进程,不给它任何清理的机会,这可能导致数据丢失或状态不一致,应作为最后手段使用。

    kill -9 <PID>
    # kill -9 12345

推荐方法:使用 Systemd 管理服务

对于生产环境,将 JAR 应用配置为 systemd 服务是最佳实践。systemd 是 CentOS 7 及以上版本标准的系统和服务管理器,它能提供自动重启、日志管理、开机自启等强大功能。

创建 .service 文件

/etc/systemd/system/ 目录下创建一个服务单元文件,your-app.service

sudo vim /etc/systemd/system/your-app.service

示例如下:

CentOS如何彻底停止一个正在后台运行的jar包?

[Unit]
Description=My Java Application Service
After=syslog.target network.target
[Service]
User=your-user               # 运行该服务的用户
Group=your-group             # 运行该服务的用户组
ExecStart=/usr/bin/java -jar /path/to/your-application.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target

关键配置说明:

  • Description: 服务的描述信息。
  • User/Group: 指定运行服务的用户和组,增强安全性。
  • ExecStart: 启动服务的完整命令。
  • SuccessExitStatus=143: Java 应用接收到 SIGTERM(即 kill 命令发送的信号)时,退出码通常是 143,将其标记为成功退出,避免 systemd 认为服务失败而重启。
  • Restart=on-failure: 在服务异常退出时自动重启。

管理服务

创建并保存文件后,执行以下命令来管理你的应用:

# 重新加载 systemd 配置,使其识别新服务
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start your-app
# 停止服务 (优雅停止)
sudo systemctl stop your-app
# 查看服务状态
sudo systemctl status your-app
# 设置服务开机自启
sudo systemctl enable your-app

使用 systemctl stop 命令时,它会向服务发送 SIGTERM 信号,实现优雅停止,这是管理 JAR 应用最规范、最可靠的方式。

方法对比

方法 优点 缺点 适用场景
查找并 Kill 简单直接,无需额外配置 手动操作,易出错;无法自动重启;进程管理混乱 临时测试、快速调试、非关键应用
Systemd 服务 自动化管理(启停、重启、日志);稳定可靠;标准化操作 需要初始配置 .service 文件 生产环境、长期运行的关键应用

小编总结与建议

在 CentOS 上停止运行 JAR 包,虽然 kill 命令能够解决问题,但对于任何需要稳定运行的 Java 应用,强烈建议采用 systemd 进行服务化管理,它不仅简化了 centos 停止运行jar 的操作,将其标准化为 systemctl stop,更提供了全面的进程生命周期管理,是现代 Linux 服务器运维的基石。


相关问答 (FAQs)


解答: 这种情况通常意味着你的 JAR 应用被一个进程管理器(如 systemdSupervisorDocker)所监控,当你使用 kill -9 强制杀死进程后,管理器会检测到进程异常退出,并根据其配置(如 Restart=on-failure)自动重启它,正确的做法是使用管理器提供的停止命令,sudo systemctl stop your-app.service,这样管理器会知道这是你主动发起的正常停止,不会尝试重启。

我忘记了 JAR 包的启动命令和文件名,如何找到并停止它?
解答: 如果你忘记了 JAR 包的名称,可以尝试以下几种方法:

  1. 按端口查找: 如果你知道应用使用的端口,使用 lsof -i :端口号 命令可以快速定位到进程及其 PID。
  2. 按用户查找: 如果你知道是以哪个用户身份运行的,可以使用 ps -u 用户名 -f 来查看该用户启动的所有进程。
  3. 查看所有 Java 进程: 使用 jps -lps aux | grep java 列出系统上所有的 Java 进程,然后根据路径或名称来识别你的应用,找到 PID 后,即可使用 kill 命令停止它。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-03 08:49
下一篇 2025-10-03 08:53

相关推荐

  • CentOS系统如何实现自动注销(自动logout)的最佳方法探讨?

    在CentOS系统中,自动logout是一个常见的需求,无论是为了提高安全性还是为了自动化运维,以下是如何在CentOS系统中实现自动logout的详细步骤和注意事项,自动logout的背景在CentOS系统中,自动logout可以防止未经授权的用户长时间占用系统资源,同时也能减少因用户忘记注销而可能引发的安全……

    2026-01-22
    003
  • CentOS 7 Telnet不通是什么原因导致的?

    在CentOS 7系统中,telnet不通是一个常见问题,可能涉及服务未启用、防火墙阻拦、网络配置错误或SELinux安全策略限制等多个方面,本文将从排查步骤到解决方案,逐步分析并解决这一问题,帮助用户快速恢复telnet连接,检查telnet服务是否安装并启用首先确认系统是否已安装telnet服务,CentO……

    2025-12-13
    005
  • 安装6.8centos

    在服务器管理和部署过程中,操作系统的安装是基础且关键的一步,CentOS作为企业级Linux发行版的代表,因其稳定性和安全性被广泛采用,本文将详细介绍如何安装CentOS 6.8版本,涵盖准备工作、安装步骤、系统配置及常见问题处理,帮助用户顺利完成部署,安装前的准备工作在开始安装CentOS 6.8之前,充分的……

    2025-12-08
    004
  • centos 7安装openfoam步骤详解,新手必看指南?

    在CentOS 7系统上安装OpenFOAM是一个需要细致操作的过程,OpenFOAM作为一款开源的计算流体动力学(CFD)软件包,广泛应用于工程和科研领域,本文将详细介绍在CentOS 7上安装OpenFOAM的完整步骤,包括环境准备、依赖安装、软件配置及常见问题解决方法,帮助用户顺利完成搭建,系统环境准备在……

    2025-11-10
    0010

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信