使用netstat检查端口
netstat 是一个命令行工具,可以提供有关网络连接的信息。
要列出正在侦听的所有 TCP 或 UDP 端口,包括使用端口和套接字状态的服务,请使用以下命令:
sudo netstat -tunlp
此命令中使用的选项具有以下含义:
- -t - 显示 TCP 端口。
- -u - 显示 UDP 端口。
- -n - 显示数字地址而不是主机名。
- -l - 仅显示侦听端口。
- -p - 显示进程的 PID 和名称。仅当您以 root 或 sudo 用户身份运行命令时,才会显示此信息。
- Proto - 套接字使用的协议。
- Local Address - 进程侦听的 IP 地址和端口号。
- PID/Program name - PID 和进程名称。
要查找在 TCP 端口 80 上侦听的进程,请键入:sudo netstat -tnlp | grep :80
使用 ss 检查端口
ss 是新的 netstat 。它缺少一些 netstat 功能,但暴露了更多的 TCP 状态,而且速度稍快。命令选项大致相同,因此从 netstat 转换为 ss 并不困难。
要使用 ss 获取所有侦听端口的列表,请键入:sudo ss -tunlp
使用 lsof 检查端口
lsof 是一个功能强大的命令行实用程序,它提供有关进程打开的文件的信息。
在 Linux 中,一切都是文件。您可以将套接字视为写入网络的文件。
要使用 lsof 获取所有侦听 TCP 端口的列表,请输入: sudo lsof -nP -iTCP -sTCP:LISTEN
使用的选项如下:
- -n - 不要将端口号转换为端口名称。
- -p - 不要解析主机名,显示数字地址。
- -iTCP -sTCP:LISTEN - 仅显示 TCP 协议状态为 LISTEN 的网络文件。
大多数输出列名称都是不言自明的:
COMMAND, PID , USER- 命令, PID 以及运行命令的用户。
NAME - 端口号。
要查找正在侦听特定端口(例如 3306)的进程,请使用以下命令:
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
sudo lsof -nP -iTCP:80 -sTCP:LISTEN