Python模块,用于扫描正在运行进程的信息,包括映射、打开的文件描述符、进程所有者以及其他信息
项目描述
ProcessMappingScanner
Python模块,用于扫描正在运行的进程,获取各种信息(映射、打开的文件、所有者、命令行等)
此模块仅在类UNIX系统上运行(Linux、BSD、cygwin等)
什么是映射?
映射可以包括正在运行的可执行文件(如python)、共享库(如libc)或其他内容(如区域存档文件或其他映射)。
您可以使用此模块,例如,扫描正在运行的进程以查看哪些进程正在使用libpython2.7,或扫描特定进程的映射。
命令行工具
ProcessMappingScanner的功能通过命令行工具 findProcessesUsing 提供访问。
功能
映射
以下是一些用于扫描运行中的进程映射的功能。
以下函数 scanProcessForMapping 用于扫描单个进程的映射。将 searchPortion 设置为空字符串以获取所有映射。
def scanProcessForMapping(pid, searchPortion, isExactMatch=False, ignoreCase=False)
‘’’
scanProcessForMapping - 在给定 pid 的映射中搜索特定模式。
@param pid <int> - 系统上的运行进程 ID
@param searchPortion <str> - 要搜索的映射,例如:libc 或 python 或 libz.so.1。输入空字符串以返回所有映射。
@param isExactMatch <bool> 默认 False - 如果匹配应该是精确的,否则执行部分匹配。
@param ignoreCase <bool> 默认 False - 如果为 True,搜索将不区分大小写。
@return <dict> - 如果找到结果,则返回以下字典。如果在给定 pid 上没有找到匹配项,或者找不到正在运行的 pid,则返回 None。
{
‘searchPortion’ : 传递的搜索模式
‘pid’ : 传递的 pid(整数形式)
‘owner’ : 进程所有者的字符串,如果找不到映射则返回 uid,如果无法确定则返回“unknown”。
‘cmdline’ : 命令行字符串
‘matchedMappings’ : 匹配给定搜索模式的映射
}
‘’’
以下函数 scanAllProcessesForMapping 对所有运行中的进程进行映射扫描。
def scanAllProcessesForMapping(searchPortion, isExactMatch=False, ignoreCase=False)
‘’’
scanAllProcessesForMapping - 在系统上扫描所有进程以查找给定搜索模式。
@param searchPortion <str> - 要搜索的映射,例如:libc 或 python 或 libz.so.1。输入空字符串以返回所有映射。
@param isExactMatch <bool> 默认 False - 如果匹配应该是精确的,否则执行部分匹配。
@param ignoreCase <bool> 默认 False - 如果为 True,搜索将不区分大小写。
@return - <dict> - 一个字典,包含匹配搜索模式的每个 pid 的 pid -> mappingResults。有关 mappingResults 的格式,请参阅 scanProcessForMapping。
‘’’
所有者
以下是一些确定谁正在运行进程的功能。
以下函数返回有关给定进程所有者(uid、用户名)的信息
def getProcessOwner(pid)
‘’’
getProcessOwner - 获取 pid 的进程所有者
@param pid <int> - 进程 ID
@return - 如果找不到进程或无法确定,则返回 None。否则,返回一个字典
{
uid - 所有者 UID
name - 所有者名称,如果无法确定则返回 None
}
‘’’
以下函数返回给定进程所有者的字符串
def getProcessOwnerStr(pid)
‘’’
getProcessOwner - 以字符串形式获取 pid 的进程所有者,而不是组件(#getProcessOwner)
@return - 如果可以确定,则返回用户名,否则返回 uid,如果都无法确定则返回“unknown”
‘’’
命令行
以下函数获取运行进程的命令行(可执行文件和参数)。
以下函数返回运行进程的命令行字符串
def getProcessCommandLineStr(pid)
‘’’
getProcessCommandLineStr - 获取给定 pid 的命令行(程序 + 参数)
@param pid <int> - 进程 ID
@return - 如果找不到进程或无法确定,则返回 None。否则,返回命令行字符串。
@note 注意,参数可能包含空格,并且您不能从该方法推断出来。如果您关心(例如尝试重新播放命令),请使用 getProcessCommandLineList
‘’’
以下函数返回表示进程“argv”的列表。
def getProcessCommandLineList(pid)
‘’’
getProcessCommandLineList - 以列表形式获取给定 pid 的命令行(程序 + 参数)
@param pid <int> - 进程 ID
@return - 如果找不到进程或无法确定,则返回 None。否则,返回表示 argv 的列表。第一个参数是进程名称,其余的是参数。
@note - 如果您关心命令中是否包含空格,请使用此方法
‘’’
文件
以下函数处理运行进程的打开文件描述符(fds)。
以下函数返回有关进程的信息
def scanProcessForOpenFile(pid, searchPortion, isExactMatch=True, ignoreCase=False)
‘’’
scanProcessForOpenFile - 对给定 pid 的打开 FD 进行扫描,以查看是否包含提供的 searchPortion
@param searchPortion <str> - 要检查的文件名
@param isExactMatch <bool> 默认为 True - 如果匹配应完全一致,否则执行部分匹配。
@param ignoreCase <bool> 默认 False - 如果为 True,搜索将不区分大小写。
@return - 如果找到结果,将返回以下字典。如果给定的 pid 没有匹配或 pid 未运行,则返回 None。
{
‘searchPortion’ : 提供的搜索部分
‘pid’ : 传递的 pid(整数形式)
‘owner’ : 进程所有者的字符串,如果无法确定则返回“unknown”
‘cmdline’ : 命令行字符串
‘fds’ : 分配给此文件的文件描述符列表(可能被映射多次)
‘filenames’ : 匹配的文件名列表
}
‘’’
以下函数扫描系统上所有进程以查找打开的文件
def scanAllProcessesForOpenFile(searchPortion, isExactMatch=True, ignoreCase=False)
‘’’
scanAllProcessessForOpenFile - 在系统上扫描给定文件名的所有进程
@param searchPortion <str> - 要检查的文件名
@param isExactMatch <bool> 默认为 True - 如果匹配应完全一致,否则执行部分匹配。
@param ignoreCase <bool> 默认 False - 如果为 True,搜索将不区分大小写。
@return - <dict> - 一个字典,包含与搜索模式匹配的每个 pid 的 pid -> mappingResults 映射。有关 “mappingResults” 的格式,请参阅 scanProcessForOpenFile
‘’’
当前工作目录
进程的当前工作目录(CWD)可以通过以下方式找到
def getProcessCwd(pid)
‘’’
getProcessCwd - 获取给定 pid 的 cwd(当前工作目录)
@param pid <int> - 进程 ID
@return <str/None> - 如果进程未找到或无法确定,则返回 None。否则,返回 CWD 的字符串
‘’’
还包含类似上述的扫描函数,如 scanProcessForCwd 和 scanAllProcessessForCwd。
通用
以下为通用函数
以下函数返回系统上运行的所有 pids 列表
def getAllRunningPids()
设计
所有的“scan”系列函数都返回一些关于进程的额外信息(所有者/cmdline)。这是因为进程可以快速开始和结束,所以获取一个完整的快照比以后无法获取要好。
Pydoc
项目详情
ProcessMappingScanner-2.3.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | adab9033e2eec465cb69265de32830b886b4345bb5d2ed224db32ef011a89796 |
|
MD5 | 23b80eea4747f53a537462b0c3d6daa0 |
|
BLAKE2b-256 | 0b7f79e2a29a48c8889bd222d0989796b18dd706a18c9362ea0fffea83b9debc |