lsof 指令全称 list open file,用官方的话说
Lsof revision 4.91 lists on its standard output file information about files opened by processes
-i
平常工作中,用到最多的就是 -i 参数,后面跟端口号,可以查看和这个端口有关的所有文件描述符,包括建立的连接,监听的进程
比如说,服务器连接 MySQL 的端口是 8090,通过下面的指令,就可以过滤出当前建立的所有连接。如果我们的目的是,查询服务调用 MySQ SDK 所建立连接的统计情况,这个指令就特别应景。
lsof -i:8090 -Pn
-P
附加的 -P 参数,官方解释如下。inhibit 含义是阻止,阻止端口的数字表示到端口名称表示的转换。
-P inhibits the conversion of port numbers to port names for network files. Inhibiting the conversion may make lsof run a little faster. It is also useful when port name lookup is not working properly.
比方说,我们查看的端口是 443,如果指定了 -P 参数的话,列表中显示的就是 443 这个端口数字。而如果没有指定 -P 参数的话,列表中显示的是 https 的端口描述。
而且,因为剩了这层转换的开销,指令执行的效率也会变快些。
-n
有了 -P 的解释,-n 就会方便很多,因为的功能都是阻止数字表示到名称表示的转换,只是操作的对象不同。-P 操作的对象是端口,-n 操作的对象是主机名。
inhibits the conversion of network numbers to host names for network files. Inhibiting conversion may make lsof run faster. It is also useful when host name lookup is not working properly.
下面的例子中,在未指定 -n 之前,输出的结果是 localhost,指定之后,输出的结果是 127.0.0.1。 ip 到主机名的转换被省略了。