📌  相关文章
📜  cli 检查端口上正在侦听的内容 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:14:10.245000             🧑  作者: Mango

CLI 检查端口上正在侦听的内容

有时候我们需要检查本机的某个端口是否正在被某个服务或程序占用,或者需要查看某个端口上正在传输的数据包。本文将介绍如何通过命令行界面检查端口上正在侦听的内容。

方法一:使用 lsof 命令

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 命令

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 命令

tcpdump 命令用于捕捉网络数据包,通过指定端口号参数,我们可以捕捉该端口上正在传输的数据包。

$ sudo tcpdump -i any -n 'port <port>'

其中 <port> 为你需要捕捉数据包的端口号,-i any 表示捕捉所有网络接口上的数据包。

结论

以上三种方法都可以用于检查端口上正在侦听的内容,根据不同的需求选择不同的方法。在使用命令前务必要注意权限问题,避免产生不必要的错误。