繁体   English   中英

关于Linux系统上的文件的信息?

[英]Information about file on Linux system?

我想知道进程是否正在使用确定文件,即文件是否由该进程以只读模式打开。

我想通过/ proc / [pid] / [fd]目录进行搜索,但这样我浪费了很多时间,而且我认为这样做并不美观。

有没有办法使用某些Linux API来确定X文件是否被任何进程打开? 或者也许某些结构数据如/ proc但是文件?

从来没听说过。 lsoffuser工具完全符合你的建议,漫游/proc/*/fd

请注意,打开文件可能没有名称,如果文件在打开后被删除,并且文件可以在没有进程保存文件描述符(通过mmap )的情况下打开,甚至可以组合使用两者(这将是一个进程私有交换文件,在进程退出时自动清除)。

确定进程是否正在使用文件很容易。 反差越小。 原因是内核不直接跟踪逆。 保留的信息是:

  1. 一个文件知道有多少链接引用自身(inode表)
  2. 进程知道它打开了哪些文件(文件描述符表)

这就是为什么lsof的/ proc步行是必要的。 特定进程使用的文件描述符保存在/ proj / $ PID(以及其他内容)中,因此lsof可以使用此(和其他东西)来吐出所有pid < - > fd < - > inode关系。

这是一篇关于lsof的好文章 与任何Linux util一样,您可以随时查看其源代码以获取所有详细信息:)

lsof可能是您正在搜索的工具。

编辑 :我没有意识到你是专门搜索要在你的应用程序中集成的东西,所以我的答案看起来有点简单。 但无论如何,我认为这个问题与你的问题非常相关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM