recon port¶
端口:
erlang:port_info(Port, Key). % 基本信息
recon:port_info/1‐2
% 1.元信息(meta)
% id: 端口的内部索引。除了用来区分端口外,没啥特殊用途
% name: 端口的类型——比如像”tcp_inet”、”udp_inet”或者”efile”之类的名字
% os_pid: 如果端口不是 inet socket,而是代表一个外部的进程或者程序
% 那么这个值会包含和外部程序对应的 OS 进程的 pid
% 2.信号(signals)
% connected: 每个端口都会有一个控制进程来对其负责,connected 指的就是这个进程的pid
% links: 端口可以和进程链接起来,方式和进程间的类似。links 包含的就是所链接进程的列表
% 注: 如果端口曾经的 owner 并不多,或者没有被手工和许多进程链接在一起,这个调用应该是安全的
% monitors: 端口(代表外部程序)可以让外部程序监控 Erlang 进程
% 3.IO(io)
% input 端口读入的字节数
% output 写入端口的字节数
% 4.内存使用(memory_used)
% memory 运行时系统为该端口分配的内存(单位为字节)。这个值会偏小,并没有包含端口自己分配的空间
% queue_size 端口程序有一个特殊的队列,称为驱动程序队列。这个调用会返回队列大小,单位为字节
% 5.特定类型(type)
% Inet Ports: 返回inet特定的数据
% 包括统计数据、socket(sockename)的本地地址和端口号以及使用的inet选项
% 其他: 目前除了inet端口外,recon不支持其他类型的端口,会返回空列表
例:
erl> recon:port_info("#Port<0.818>").
%操作步骤:
1.先整体
erl> recon:inet_count(oct, 3).
[{#Port<0.241>,30,[{recv_oct,4},{send_oct,26}]},
{#Port<0.238>,0,[{recv_oct,0},{send_oct,0}]}]
% 参数:
% 发送的字节数: send_oct
% 接收的字节数: recv_oct
% 收发的字节数: oct
% 发送的包数: send_cnt
% 接收的包数: recv_cnt
% 收发的包数: cnt
2.再细节
erl> recon:port_info("#Port<0.241>").
3.时间段
erl> recon:inet_window(Attribute, Count, Milliseconds)
例:
erl> recon:inet_window(send_oct, 3, 5000).