一、Netstat命令
Netstat(网络统计)是Linux下常用的网络工具,可以用来显示和断开网络连线,以及查询网络接口和路由表等信息。
查询端口号也是常见的用途之一,下面是Netstat命令的一些常用选项:
netstat -a //显示所有socket
netstat -t //显示所有TCP传输socket
netstat -u //显示所有UDP传输socket
netstat -n //使用数字地址不进行反向域名解析
例如,下面的命令可以查询TCP传输socket的端口号:
netstat -tn
输出结果类似于:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53969 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:39218 151.101.193.69:443 ESTABLISHED
...
可以看到,这个命令可以列出当前系统的所有TCP连接,包括本地地址,外部地址和连接状态,进而查询端口号。
二、Lsof命令
Lsof(List Open Files)是一个列出当前系统打开的文件的工具,可以用来识别和分析进程所打开的所有文件和网络连接。
下面是Lsof命令的一些常见选项:
lsof -i //只显示网络连接
lsof -i :端口号 //显示使用特定端口号的网络连接
lsof -i TCP //只显示TCP连接
lsof -i UDP //只显示UDP连接
例如,下面的命令可以查询占用端口号为80的进程:
lsof -i :80
输出结果类似于:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 1223 root 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
httpd 1788 apache 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
httpd 1789 apache 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
httpd 1790 apache 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
httpd 1791 apache 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
httpd 1792 apache 4u IPv6 11116457 0t0 TCP *:http (LISTEN)
可以看到,这个命令可以列出所有使用端口号80的进程。
三、ss命令
ss(Socket Statistics)是Linux下的另一个网络工具,用于显示网络套接字的状态信息。
下面是ss命令的一些常用选项:
ss -a //显示所有socket
ss -t //显示所有TCP传输socket
ss -u //显示所有UDP传输socket
ss -n //使用数字地址不进行反向域名解析
例如,下面的命令可以查询TCP传输socket的端口号:
ss -tn
输出结果类似于:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
ESTAB 0 0 192.168.1.100:22 192.168.1.101:39910
可以看到,这个命令可以列出当前系统所有的TCP连接状态,包括本地地址,远端地址和连接状态,进而查询端口号。
四、pidof命令
pidof命令可以根据程序的名称查询其进程ID(PID)。
例如,下面的命令可以查询nginx进程的PID:
pidof nginx
输出结果类似于:
2500 2497 2495
可以看到,这个命令同时列出了nginx启动的多个进程的PID。
五、总结
通过以上几种方式,我们可以查询当前系统的端口号信息,这对于网络调试、安全检查和运维管理都非常有帮助。
例如,可以使用Netstat命令列出整个系统所有的TCP/UDP连接状态,如果需要查询特定端口号或进程的信息,则可以使用Lsof或pidof命令来进行查询。