例如,如果我有一个 java 进程(每 2 小时一次)备份一个大文件(例如 500mb),并将其放入 HDD A 上的文件夹 A 中,并且我想安排一个 cron 脚本来复制整个文件夹A 每天一次到 HDD B...如果 cron 脚本在 java 进程正在写入文件夹 A 的过程中碰巧触发,会发生什么情况?会等吗?它会忽略尚未写入的文件吗?
答案1
一般来说,Unix 命令对文件的处理方式是一样的,无论文件是否打开并正在写入。因此,如果 cron 作业用于cp
复制目录,则复制的内容仅取决于命令检查目录时目录中的内容cp
。如果文件在cp
访问时仅部分写入,则会生成部分写入的副本。如果要防止此类情况发生,则需要在协作进程之间实施锁定方案,以防止并发访问目录。