擅长:python、mysql、java
<p>在linux中,有一组称为<a href="http://man7.org/linux/man-pages/man7/inotify.7.html" rel="nofollow noreferrer">inotify</a>的事件,可以用来检测某个进程是否正在访问一个文件。
有一个python库用于访问这个库<a href="https://github.com/seb-m/pyinotify" rel="nofollow noreferrer">pyinotify</a>。在</p>
<p>这篇博客文章解释了如何用pyinotify检查文件。在</p>
<p><a href="http://www.saltycrane.com/blog/2010/04/monitoring-filesystem-python-and-pyinotify/" rel="nofollow noreferrer">http://www.saltycrane.com/blog/2010/04/monitoring-filesystem-python-and-pyinotify/</a></p>
<p>另外,<code>lsof</code>可能是一个选项,在这种情况下,您可以使用<a href="http://pythonhosted.org/psutil/index.html?highlight=lsof#psutil.Process.open_files" rel="nofollow noreferrer">http://pythonhosted.org/psutil/index.html?highlight=lsof#psutil.Process.open_files</a>。在</p>
<pre class="lang-py prettyprint-override"><code>>>> import psutil
>>> f = open('file.test', 'w')
>>> p = psutil.Process()
>>> p.open_files()
[popenfile(path='/Users/username/file.test', fd=3)]
>>>
</code></pre>