python是否有挂钩到EXT3

时间:2009-07-02 16:32:54

标签: python linux ext3

我们有几个cron作业,ftp代理日志到中央服务器。这些文件可能相当大,需要一些时间来传输。该项目的部分要求是提供一种记录机制,我们记录这些转移的成功或失败。这很简单。

我的问题是,有没有办法检查当前是否正在写入文件?我的第一个解决方案是在给定的时间范围内检查文件大小两次并检查文件大小。但是一位同事表示,可以通过python挂钩到EXT3文件系统,并检查属性以查看当前是否附加了该文件。我的Google-Fu空了。

是否有用于EXT3的模块或其他可以让我检查文件状态的模块?服务器正在运行带有EXT3文件系统的Fedora Core 9。

2 个答案:

答案 0 :(得分:7)

不需要特定于ext3的钩子;只需检查lsof,或者更确切地说,/proc/<pid>/fd/*/proc/<pid>/fdinfo/*lsof获取信息的地方,AFAICT)。在那里你可以检查文件是否打开,是否可写,以及'光标'位置。

这不是全局;但是stdlib在写入过程中在进程空间中完成了更多任务,因为大多数写入都是缓冲的,内核只能看到更大的数据块,所以任何“ext3-aware”监视器都不会得到它。

答案 1 :(得分:1)

没有ext3挂钩可以直接检查你想要的东西。

  • 我想你可以挖掘Fuser linux命令的源代码,复制找到哪个进程拥有文件的部分,并观察该资源。当没有人打开文件时,就完成了传输。

另一种方法:

  • 你的cron工作应该告诉他们已经完成了。

我们有传输文件的cron作业,只需在传输文件名后写一个空的 filename.finished 。另一种方法是将它们转移到临时文件名,例如 filename.part 然后将其重命名为 filename 重命名为atomic。在这两种情况下,您都会反复检查,直到出现 filename filename.finished