我有一个开始写入文件的外部进程。
如何编写等待文件关闭的脚本(当其他进程完成写入时)。
最佳答案
有几种方法可以实现这一点:
如果可以,请从您的脚本开始流程。该脚本将在进程终止时继续,这意味着它无法向文件写入更多数据。
如果您无法控制进程,但知道进程在写入文件后终止,则可以找出进程 ID,然后使用
kill -0 $ 检查进程是否仍在运行PID
。如果之后$?
为0
,则进程仍然存在。如果这不可能,那么您可以使用
lsof -np $PID
获取此进程的所有打开文件的列表,并检查您的文件是否在列表中。不过,这有点慢。
[编辑] 请注意,所有这些方法都有些脆弱。正确的解决方案是让外部进程使用临时名称写入文件,然后在完成后立即重命名。
重命名可确保其他人要么看到包含所有数据的整个文件,要么什么也看不到。
关于linux - 如何等到文件关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618786/