[英]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.