簡體   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