我们有几个 ftp 代理记录到中央服务器的 cron 作业。这些文件可能相当大并且需要一些时间来传输。该项目的部分要求是提供一种日志机制,我们可以在其中记录这些传输的成功或失败。这很简单。
我的问题是,有没有办法检查当前是否正在写入文件?我的第一个解决方案是在给定的时间范围内检查文件大小两次并检查文件大小。但是一位同事说,也许可以通过 python Hook 到 EXT3 文件系统并检查属性以查看当前是否正在附加文件。我的 Google-Fu 是空的。
是否有用于 EXT3 的模块或其他可以让我检查文件状态的模块?服务器正在运行带有 EXT3 文件系统的 Fedora Core 9。
最佳答案
不需要特定于 ext3 的钩子(Hook);只需检查 lsof
,或者更准确地说, /proc/<pid>/fd/*
和 /proc/<pid>/fdinfo/*
(这就是 lsof
获取信息的地方,AFAICT)。在那里您可以检查文件是否打开、是否可写以及“光标”位置。
这还不是全部。但是在写入过程中,stdlib 在 processpace 中完成了更多工作,因为大多数写入都是缓冲的,内核只能看到更大的数据块,因此任何“ext3-aware”监视器也不会得到它。
关于python - python 是否与 EXT3 Hook ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1075391/