对于这样一个菜鸟问题,提前抱歉,但我当然是菜鸟。我的问题是与我的示例相关的端口上的 LISTEN 或 ACCEPT 是什么意思?
示例:我有一个 tomcat 服务器,它将使用端口 8080。我想确保该端口可供我使用。
我应该在我的 Unix 服务器上执行哪些命令,为什么?
这样的命令会给我什么信息:netstat -an | grep LISTEN
要检查端口 8080 是否在使用中,您可以简单地使用命令netstat -an|grep 8080
。如果您得到以下格式的输出,则表示 8080 已在使用中,您需要为 tomcat 分配一个新端口。
# netstat -an
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN
Netstat
命令显示各种网络相关信息,例如网络连接、路由表、接口统计信息、伪装连接、多播成员资格等,
a
选项netstat
将为您提供监听和非监听端口
n
选项 当您不想显示主机、端口或用户的名称时,请使用netstat -n
选项。这将以数字显示,而不是解析主机名、端口名、用户名。这也加快了输出,因为netstat
不执行任何查找。
如果一个端口LISTEN
在 netstat 中显示,这意味着该端口正在被服务器进程使用,所以你不能使用它。这是一个例子:
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
这表明端口631正在使用中。
最后忽略 UNIX 类型的套接字——它们无关紧要。
为了更多地了解 netstat 命令的使用,这里是它的选项:
-a : All ports
-t : Ports TCP
-u : Ports UDP
-l : Listening ports
-n : IP address without domain name resolution
-p : Name of the program and it associated PID
所以:
- 显示所有端口(TCP 和 UDP),PId 与程序的关联名称:
$ netstat -paunt
- 显示所有监听端口(TCP),PId和程序的关联名称:(我们也可以用grep命令过滤)
$ sudo netstat -plnt | grep ':80'
我希望它会有所帮助:)
您还可以使用 telnet 检查端口是否打开并正在侦听,例如,
Zeeshan$ telnet google.com 80
Trying 173.194.35.5...
Connected to google.com.
Escape character is '^]'.
我正在端口 80 上远程登录 google.com。如果您在输出中看到第三行,您会注意到它说它已连接到 Google 的 Web 服务器。与您拥有一个名为 Tomcat 的 JAVA 应用程序服务器相同的方式,它正在侦听端口 8080。事实上,它要求客户端在端口 8080 上连接到它,以便它可以将 JAVA 服务提供给客户端。当我从客户端 telnet localhost 8080 使用时,我将像在端口 80 上连接 Google 的 Web 服务器一样连接。前提是 Tomcat 正在运行并在端口 8080 上侦听。如果端口 8080 不是空闲的并且被某些人占用其他应用程序,您可以简单地将端口 8080 更改为另一个空闲端口。Telnet 应该为您提供以下状态:
accepted (connected), refused, and timeout
所以现在有两种可能的检查方法。从您正在运行 Tomcat 服务器的同一台机器上:
telnet localhost 8080
如果您想从其他机器或网络外部检查它:
telnet 192.168.1.1 8080
我希望这会有所帮助。
use can also run the below command, it will list the Port and corresponding PID, if any process is using those ports
netstat -tulpn