[英]Information about file on Linux system?
我想知道进程是否正在使用确定文件,即文件是否由该进程以只读模式打开。
我想通过/ proc / [pid] / [fd]目录进行搜索,但这样我浪费了很多时间,而且我认为这样做并不美观。
有没有办法使用某些Linux API来确定X文件是否被任何进程打开? 或者也许某些结构数据如/ proc但是文件?
从来没听说过。 lsof
和fuser
工具完全符合你的建议,漫游/proc/*/fd
。
请注意,打开文件可能没有名称,如果文件在打开后被删除,并且文件可以在没有进程保存文件描述符(通过mmap
)的情况下打开,甚至可以组合使用两者(这将是一个进程私有交换文件,在进程退出时自动清除)。
确定进程是否正在使用文件很容易。 反差越小。 原因是内核不直接跟踪逆。 保留的信息是:
这就是为什么lsof
的/ proc步行是必要的。 特定进程使用的文件描述符保存在/ proj / $ PID(以及其他内容)中,因此lsof可以使用此(和其他东西)来吐出所有pid < - > fd < - > inode关系。
这是一篇关于lsof
的好文章 。 与任何Linux util一样,您可以随时查看其源代码以获取所有详细信息:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.