linux - 如何等到文件关闭

标签 linux

我有一个开始写入文件的外部进程。
如何编写等待文件关闭的脚本(当其他进程完成写入时)。

最佳答案

有几种方法可以实现这一点:

  • 如果可以,请从您的脚本开始流程。该脚本将在进程终止时继续,这意味着它无法向文件写入更多数据。

  • 如果您无法控制进程,但知道进程在写入文件后终止,则可以找出进程 ID,然后使用 kill -0 $ 检查进程是否仍在运行PID。如果之后 $?0,则进程仍然存在。

  • 如果这不可能,那么您可以使用 lsof -np $PID 获取此进程的所有打开文件的列表,并检查您的文件是否在列表中。不过,这有点慢。

[编辑] 请注意,所有这些方法都有些脆弱。正确的解决方案是让外部进程使用临时名称写入文件,然后在完成后立即重命名。

重命名可确保其他人要么看到包含所有数据的整个文件,要么什么也看不到。

关于linux - 如何等到文件关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618786/

相关文章:

Python 脚本在 Spyder 中完美运行(在 Windows 上)——在 Linux 上不起作用

linux - 启动脚本在 ubuntu 中不起作用

Java 性能 Windows 与 Linux

c - 执行时间的准确变化

linux - 使用 linux 的 ftp 命令上传图像文件后损坏,类型为 ASCII

linux - 分号在 awk Action 中代表什么?

linux - 使用 shell 脚本更新版本

linux - 在 BASH 中使用 mv 将时间戳添加到文件名

linux - 如何在不访问存储库的情况下更新具有依赖项的 CentOS 软件包

jquery - 来自外部源的 .js/.css 代码仅在 https 中未加载