gpt4 book ai didi

python - lsof 有什么方法可以显示整个 argv 数组而不仅仅是 argv[0]

转载 作者:行者123 更新时间:2023-12-04 18:00:57 25 4
gpt4 key购买 nike

我目前有一个 python 脚本,可以在大型网络中完成一项非常有用的任务。我所做的是使用 lsof -iTCP -F 和其他一些选项来转储所有监听的 TCP 套接字。我能够得到 argv[0],这不是问题。但是要获得完整的 argv 值,我需要运行 ps,并将 PID 映射在一起,然后将来自 ps 的完整 argv 值合并到 lsof 创建的记录中。这感觉不必要地复杂,并且对于 10000 多个主机,在 Python 中合并这些数据非常慢。

有什么方法可以通过 lsof 显示完整的 argv 值吗?我已经阅读了手册但找不到任何东西,所以我不太希望有任何方法可以做到这一点。当然,我可以为 lsof 编写一个补丁,但是我必须将它部署到 10000 多个系统,这在这一点上是不可能的。

此外,如果有人有任何聪明的方法来处理 Python 中的处理,以至于合并数据不需要 10 分钟,我很想知道。目前,我将所有 lsof 和 ps 数据加载到键为 (ip,pid) 的字典中,然后合并它们。然后,我使用键为 (ip,port) 的合并字典中的数据创建一个新字典。这真的很慢,因为前两个进程需要遍历所有 lsof 数据。这可能不是问题,但我想我会把它扔在这里。在这一点上,我唯一的想法是计算处理器数量并生成 N 个子进程,每个子进程都有一大块数据要解析,然后将它们全部返回给父进程。

最佳答案

如果您知道进程的 PID(例如 12345),则可以通过读取特殊文件 /proc/12345/cmdline 来确定整个 argv 数组。它包含由 NUL (\0) 字符分隔的 argv 数组。

关于python - lsof 有什么方法可以显示整个 argv 数组而不仅仅是 argv[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com