一尘不染

如何获得与打开端口的应用程序相关的端口?

linux

我需要获取机器上所有打开的端口以及打开它们的应用程序的列表。我需要以编程方式获取此信息。

谢谢。


阅读 245

收藏
2020-06-07

共1个答案

一尘不染

我希望能有一个更聪明的答案。我只是这样做(用Python编程),试图重写一个名为NetHogs的程序。我的版本在这里,特别是这里是Python中用于从中解析表的模块/proc。如果您不是精通Python的人(请学习它),那么请看一下原始的NetHogs,它使用了C
/ C ++的混合(阅读起来很麻烦,因此需要重写)。

值得注意的是,解析/proc操作系统中的套接字信息的大量或快速重复尝试非常占用CPU资源,因为操作系统必须处理所做的每个系统调用,并动态解析内部结构。这样,您会在我链接到的两个项目的源代码中找到一些缓存和时序假设。

简而言之,您需要将为每个进程指定的套接字inode与中给定/proc/<pid>/fd的连接相关联/proc/net/<proto>。再次,示例解析以及如何找到所有这些都存在于两个项目中。

2020-06-07