簡體   English   中英

在 Linux 中使用 Python 檢查打開的文件

[英]Check for open files with Python in Linux

我正在尋找一種方法來確定使用 Python 在我的整個系統 (Linux) 中打開了哪些文件。 我找不到任何執行此操作的模塊。

或者也許唯一的方法是使用命令 lsof?

截至 2018 年 4 月更新psutil更新版本:

較新版本的psutil現在psutil使用了一個稍微不同的函數名稱open_files ,如其文檔中的以下示例所示:

>>> import psutil
>>> f = open('file.ext', 'w')
>>> p = psutil.Process()
>>> p.open_files()
[popenfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3)]

原始答案/舊版本的psutil

如果您查看 psutil python 模塊(在 PyPI 上可用)的文檔,您會發現一種檢查給定進程上打開文件的方法。 您可能想要獲取相關堆棧溢出響應中所述的所有活動 PID 的列表。 然后使用下面的方法:

get_open_files() 返回由進程打開的常規文件作為命名元組列表,包括文件絕對路徑名和文件描述符。 示例:

>>> f = open('file.ext', 'w')
>>> p = psutil.Process(os.getpid())
>>> p.get_open_files()
[openfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3)]

在 0.2.1 中更改:用 C 重寫 OSX 實現; 不再需要lsof。 在 0.4.1 中更改:用 C 重寫 FreeBSD 實現; 不再需要lsof。

編輯:為了迭代活動的 PID,psutil 有另一種方法(上面的堆棧溢出響應中也引用了該方法):

psutil.process_iter()

返回一個迭代器,為本地機器上的所有正在運行的進程產生一個 Process 類實例。 每個新的 Process 實例只創建一次,然后緩存到一個內部表中,每次使用時都會更新該表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM