📅  最后修改于: 2023-12-03 15:14:10.245000             🧑  作者: Mango
有时候我们需要检查本机的某个端口是否正在被某个服务或程序占用,或者需要查看某个端口上正在传输的数据包。本文将介绍如何通过命令行界面检查端口上正在侦听的内容。
lsof(list open files) 命令可以列出系统中打开的文件和进程,通过指定端口号参数,我们可以查看该端口上正在侦听的服务及其进程信息。
$ sudo lsof -i:<port>
其中 <port>
为你需要检查的端口号,如果需要查看所有端口上正在侦听的服务,可以使用 -i
参数。
$ sudo lsof -i
输出会包含占用该端口的进程及其 PID.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 9775 root 3u IPv4 169223 0t0 TCP *:ssh (LISTEN)
sshd 9775 root 4u IPv6 169230 0t0 TCP *:ssh (LISTEN)
netstat 命令用于显示网络状态信息,通过 -a
参数可以列出所有正在被侦听的端口及其状态。
$ sudo netstat -an | grep '<port>'
其中 <port>
为你需要检查的端口号,如果需要查看所有端口,可以删除 grep 命令。
$ sudo netstat -an
输出会包含所有端口及其状态信息。
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:<port> 0.0.0.0:* LISTEN
tcpdump 命令用于捕捉网络数据包,通过指定端口号参数,我们可以捕捉该端口上正在传输的数据包。
$ sudo tcpdump -i any -n 'port <port>'
其中 <port>
为你需要捕捉数据包的端口号,-i any
表示捕捉所有网络接口上的数据包。
以上三种方法都可以用于检查端口上正在侦听的内容,根据不同的需求选择不同的方法。在使用命令前务必要注意权限问题,避免产生不必要的错误。