如果我替换挂起进程正在使用的文件并启动新进程,它将使用新文件还是旧文件?

如果我替换挂起进程正在使用的文件并启动新进程,它将使用新文件还是旧文件?

我使用的是 Red hat GNU/linux 2.6.32-431.29.2.el6.x86_64。

最近 - 我的一个进程挂起。此过程使用了目录中的几个文件 - 例如 DIR-1 。当进程处于挂起状态时,我将这些文件移动(而不是复制)到备份目录 - 例如 DIR-BKP 并将较新版本的文件添加到 DIR-1 目录。请注意,这些较新版本的文件与 DIR-BKP 文件夹中的文件完全相同。

由于我的进程在这一切过程中仍处于挂起状态,如果我启动一个新进程,该进程将使用 DIR-1 中的文件,会发生什么情况?新进程会使用 DIR-BKP 或 DIR-1 中的文件吗?由于旧进程仍在使用旧版本的文件(尽管它们已移至 DIR-BKP 目录),因此不确定新进程是否将使用新版本的文件或将继续使用旧版本。

答案1

如果将文件复制到新位置,则任何进程都不会意识到这一点,除非您更改某些内容以将其定向到新位置(例如更改命令行选项或在某处编辑配置文件)。如果您移动文件,进程不会自动跟踪它们。因此,新进程应尝试使用 DIR-1 中的文件。

但有几个问题:

  1. 为什么不在开始新进程之前杀死挂起的进程(可能更安全)?

  2. 如果新文件完全相同,为什么不直接复制文件而不是移动文件呢?

相关内容