想象一下使用目录的一堆进程/home/user/logs
。他们有一些日志打开的时间较长。
答案1
是的,在某些条件下。如果移动文件的父目录,文件的 inode 不会改变,因此打开的文件句柄仍然有效。条件是:
- 您不会跨文件系统移动目录。当然,这会改变文件的索引节点号。
- 过程实际上做保持文件打开,并且偶尔不要关闭它们(如果是这样,您必须重新配置应用程序以使它们知道新的父目录)
- 您正在使用 ext2/3/4 或 ufs 的各种版本之一。我不能诚实地谈论其他文件系统,因为我不确定它们的内部组织方式。
答案2
进程通常不会在日志中长时间保持文件打开状态。
是的,您可以随时移动/删除任何进程正在使用的任何目录或文件。哎呀,您可以在进程运行时删除该进程的可执行文件,它将继续运行。
但是,请为一些可能的情况做好准备:
- 当进程重新打开以写入日志文件时,它们将重新创建它们。
- 进程将继续写入旧位置而不是新位置
- 如果删除进程的可执行文件,您将无法再次启动它
当没有进程使用文件描述符时,文件将在删除时被物理清除。您将立即看到文件被移动/删除。