Fedora 中的 Netstat 没有列出简单的 netcat 服务器,Ubuntu 有

Netstat in Fedora doesn't list simple netcat server, Ubuntu does

我正在用 netcat:

打开一个简单的 TCP 服务器
$ netcat -l -p 1234

然后我想通过 netstat:

检查它是否在侦听 tcp 连接中列出
$ netstat -lt

如果我在 Ubuntu 系统上发出前面的命令

$ uname -v
#65~14.04.1-Ubuntu SMP Tue Apr 19 18:57:09 UTC 2016

我的服务器已正确列出:

$ netstat -lt
...
tcp        0      0 *:1234                  *:*                     LISTEN
...

如果我在 Fedora 系统上做同样的事情:

$ uname -r
3.17.4-301.fc21.x86_64

在这种情况下我找不到我的服务器:

$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:search-agent    0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:search-agent       [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN 

当我编写打开服务器套接字的程序时也会出现此问题,我需要编写一个测试来自动检查服务器是否在正确的端口上侦听(适用于 Ubuntu,不适用于 Fedora ).是否可以完全使用 netstat 在 Fedora 上进行这种检查?

Ubuntu netstat 的默认开关可能与 fedora 不同,因此您看到的是 "symbolic" 端口名称而不是端口号。将开关 -n 添加到 fedora netstat (IIRC) 以使用数字端口。

您需要检查 /etc/services 配置文件中端口号 1234 是否存在任何其他服务 - 端口映射。

例子。

OEL 6 上,我看到端口 1234 映射到名为 search-agent 的服务。现在下面的输出是不言自明的

# netstat -l | grep -i search-agent
#
#  nc -l 1234

在其他终端上

#netstat -l | grep -i search-agent
tcp        0      0 *:search-agent              *:*                         LISTEN