rmo*_*njo 21 linux open-files tcp proc
我需要知道具有给定 PID 的进程是否在不使用外部命令的情况下打开了一个端口。然后我必须使用/proc文件系统。/proc/$PID/net/tcp例如,我可以读取文件并获取有关进程打开的 TCP 端口的信息。但是,在多线程进程上,该/proc/$PID/task/$TID目录还将包含一个net/tcp文件。我的问题是:
我需要查看所有线程net/tcp文件,还是将线程打开的端口写入进程net/tcp文件。
lar*_*sks 28
例如,我可以读取 /proc/$PID/net/tcp 文件并获取有关进程打开的 TCP 端口的信息。
该文件不是进程打开的 tcp 端口列表。这是在当前网络命名空间所有打开的TCP端口的列表,并在同一个网络的命名空间运行的进程是相同的,以内容/proc/net/tcp。
要查找进程打开的端口,您需要从 中获取套接字描述符列表/proc/<pid>/fd,然后将这些描述符与 的inode字段匹配/proc/net/tcp。
小智 13
请
cat /proc/$PID/net/tcp
Run Code Online (Sandbox Code Playgroud)
你会得到这样的输出
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:01BB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 2891985097 1 0000000000000000 100 0 0 10 0
Run Code Online (Sandbox Code Playgroud)
输出的第二列 ( local_address) 以十六进制显示端口。使用编程计算器将十六进制代码转换为十进制。
例如,端口 :01BB(十六进制)等于 443(十进制),这是 HTTPS 默认端口。
| 归档时间: |
|
| 查看次数: |
25046 次 |
| 最近记录: |