检测文件已关闭

时间:2010-04-14 16:28:11

标签: linux file

是否有一种简单的方法可以检测写入文件何时关闭?我有一个进程,每5秒启动一个新文件。我无法更改该进程的代码。我正在编写另一个进程来在创建时立即分析每个文件的内容。是否有一种简单的方法来查看某个目录以查看何时不再打开文件进行写入?我希望有某种Linux命令。

5 个答案:

答案 0 :(得分:2)

如果您知道文件中有一些特定的文字(行)表示写作完成,您可以使用grep

等命令轻松查看

此外,您可以使用fuser命令查明文件是否正在使用中。

答案 1 :(得分:2)

当您使用linux作为平台时,您可能需要查看inotify系统调用。当监视目录时,输出文件被写入,您将获得在那里创建的文件的打开/关闭事件。

如果要将其集成到shell脚本中,请查看inotifywait,它是inotify-tools的一部分。

答案 2 :(得分:2)

你可以把一些东西置于strace之上以提升你的活动。

尝试:

strace ls 2>&1 | grep "close\|open"

使用inotify也是一个好主意,但可能需要更多编码才能获得所需内容。

答案 3 :(得分:1)

在完成使用之前,你可以lock the contents of your file

答案 4 :(得分:1)

如果您知道正在编写文件的进程的进程ID,则可以查看/proc/<pid>/fd/以查看它已打开的文件。