我们有java进程(cassandra服务)在我们的Linux机器上运行jdk 1.6,我们确实使用rpm包将机器上的JDK从1.6升级到1.7,而没有停止运行早期版本java的进程(/usr/bin/jdk1.6/bin/java)。成功升级后,旧版本的jdk从机器中删除,只有新版本(1.7)可用,但之前使用旧版本(1.6)运行的进程没有受到影响,仍然从旧路径运行。即使进程显示的旧java路径现在在机器中不存在。有人能解释一下这种行为吗?
lsmepo6l1#
这是Unix/Linux处理打开文件的方式。旧版本的卸载要求操作系统取消链接文件。然而,它们仍然是开放的(这可以用lsof来显示),所以仍然被认为是有效的。一旦所有打开的文件句柄被关闭,这些文件将被“永久”删除。多一点信息可以是found here。
lsof
1条答案
按热度按时间lsmepo6l1#
这是Unix/Linux处理打开文件的方式。旧版本的卸载要求操作系统取消链接文件。然而,它们仍然是开放的(这可以用
lsof
来显示),所以仍然被认为是有效的。一旦所有打开的文件句柄被关闭,这些文件将被“永久”删除。多一点信息可以是found here。