我们在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路径现在不在机器中。
有人可以解释一下这种行为吗?
答案 0 :(得分:1)
这是Unix / Linux处理打开文件的方式。卸载旧版本要求操作系统取消链接文件。但是,它们仍处于打开状态(可以显示lsof
),因此仍被视为有效。关闭所有打开的文件句柄后,文件将被“永久”删除。更多信息可以是found here。