麒麟系统如何管理多个Java版本的后台进程

梦敏姑娘_7922

梦敏姑娘_7922

2026-09-08

997人浏览

原创

先用loginctl list-sessions查会话及用户归属,再用loginctl show-session核对type、leader、user并验证leader pid有效性;接着用ps+readlink按java_home路径精准分离java进程版本;最后通过pgrep -f配合kill -term安全终止指定jdk进程,残留时需确认/proc/pid/exe真实路径后再决定是否kill -9。

麒麟系统如何管理多个java版本的后台进程

确认多Java进程的归属用户与会话

当多个Java服务在麒麟V10上并行运行时,不同版本的JDK可能被不同用户启动(如appuser用Java 8跑旧系统,devuser用Java 17跑新服务),但ps aux默认不显示其登录会话上下文,极易混淆进程来源。必须先执行loginctl list-sessions,观察输出中各session ID对应的User字段——若某session显示User=appuser且State=active,则该会话下所有Java进程均属此用户;若出现User=systemd-journal或State=closing,说明是残留僵尸会话,需跳过处理,否则后续操作可能误杀系统关键进程。

接着对目标会话ID(如c2)执行loginctl show-session c2 -p Type -p Leader -p User,重点核对Leader字段返回的PID是否为Java进程的父进程号。【若Leader PID对应进程已退出(ps -p XXX无输出),则该session不可信,禁止以此为依据筛选子进程】。

按Java版本精准分离进程树

方法一:通过JAVA_HOME路径反向定位——执行ps -eo pid,cmd --no-headers | grep "java" | grep -v "grep" | while read p c; do echo "$p $(readlink -f /proc/$p/exe 2>/dev/null | grep -o 'jdk[^/]*/bin/java' | head -n1) $c"; done | sort -k2。该命令提取每个java进程实际调用的JDK二进制路径,自动归类出如“/usr/lib/jvm/java-8-openjdk-amd64/bin/java”或“/opt/jdk-17.0.8/bin/java”等版本标识,结果按版本列排序,一眼可辨哪棵树属于哪个JDK。

方法二:利用jps辅助验证——先用loginctl show-user $USER | grep "Session=" | cut -d= -f2 | xargs -I{} ps --no-headers -o pid -s $(loginctl show-session {} -p Leader -q)拿到当前用户全部会话内进程PID列表,再对每个PID执行jps -l <pid></pid>(需确保该JDK已配置jps工具)。若返回“Could not attach to process”,说明该进程非标准Java启动或权限受限,此时应退回方法一验证。

安全终止指定Java版本的全部用户进程

第一步:确认目标JDK安装路径,例如/opt/jdk-11.0.20;

第二步:执行pgrep -f "/opt/jdk-11.0.20.*java" | xargs -r kill -TERM,向所有匹配该路径的java进程发送温和终止信号;

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载

第三步:等待5秒后检查残留——pgrep -f "/opt/jdk-11.0.20.*java" | wc -l,若输出大于0,说明存在僵死进程;

第四步:对残留PID逐个执行ls -l /proc/<pid>/exe</pid>,确认其真实二进制路径是否仍指向该JDK——有些进程虽启动参数含路径,实则已fork出子进程并替换为其他程序,此时不可盲目强杀。【仅当确认exe路径确实为对应JDK且进程无响应时,才执行kill -9 】。

防止Java进程跨用户泄露与自动拉起

编辑/etc/security/limits.d/java-users.conf,为关键用户添加硬性限制:appuser soft nproc 512、appuser hard nproc 1024,避免单用户Java应用失控创建海量线程拖垮系统。

检查systemd用户实例是否启用——执行loginctl show-user appuser | grep "Linger",若输出为Linger=no,说明该用户登出后其systemd --user服务将被强制终止,无法自动重启Java服务;若需后台常驻,应先运行sudo loginctl enable-linger appuser,否则后续配置的.service文件不会生效。

对已部署为systemd服务的Java应用(如/etc/systemd/system/myapp.service),在[Service]段末尾追加Environment="JAVA_HOME=/opt/jdk-17.0.8",强制绑定JDK路径。这比依赖全局环境变量更可靠,【避免因其他用户修改/etc/profile导致服务启动时加载错误版本JDK】。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

9237

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

6402

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

5732

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1024

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

848

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1216

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2429

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

19791

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1095

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习