linux - Linux 中基于 rpm 的 JDK 从 1.6 升级到 1.7 期间,现有 java 进程不受影响

标签 linux upgrade java-6

我们在 Linux 机器上运行了 jdk 1.6 的 java 进程(cassandra 服务),并且我们使用 rpm 包将机器中的 JDK 从 1.6 升级到 1.7,而无需停止该进程(/usr/bin/jdk1.6/bin/java) 与早期版本的 java 一起运行。

升级成功后,旧版本的jdk从机器上删除,只有新版本(1.7)可用,但之前使用旧版本(1.6)运行的进程不受影响,仍在运行旧路。尽管该进程显示的旧 java 路径现在在机器中不存在。

有人可以向我解释一下这种行为吗?

最佳答案

这是 Unix/Linux 处理打开文件的方式。旧版本的卸载要求操作系统取消文件链接。然而,它们仍然是开放的(这可以用lsof显示),因此仍然被认为是有效的。一旦关闭所有打开的文件句柄,这些文件将被“永久”删除。更多信息可以是 found here .

关于linux - Linux 中基于 rpm 的 JDK 从 1.6 升级到 1.7 期间,现有 java 进程不受影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796572/

相关文章:

java - 如何在 Java 6 中等效于 Collectors.groupingBy?

c++ - 如何从核心转储中获取系统时间?

magento - 从Magento 2.0.2升级失败 "An error has happened during application run. See exception log for details."

java - 即使我们目前不打算迁移到 Java 8+,我们也可以升级到 Spring 5 吗?

java - Eclipse 在启动时崩溃;退出代码=13

linux - 了解 Ubuntu Linux IPv6 输出处理上的 JDK 1.6

python - 有什么简单的方法可以使 python raw_input UI 更像 bash UI 吗?

c++ - 我应该在 dlopen 之前锁定吗?

json - 如果嵌套数组为空,jq 将不返回任何内容

android - 有没有办法在旧的 Android 设备( donut )上升级 API 级别?