1

使用 Centos 5.5。

我有一个在端口 9999 上运行的 Apache 2.x 服务器,我正在尝试使用 fuser 找到它。

我可以使用 netstat 找到它,即:

网络统计-an | grep 9999

输出:

tcp        0      0 :::9999                     :::*                        LISTEN  

问题 1:为什么 netstat 使用 IPv6 语法显示端口?

问题 2:我可以使用什么 fuser 命令来查找服务器的 pid?以下都不起作用:

fuser -n tcp :::9999

定影器 -n tcp 9999

定影器 -4 -n tcp 9999

定影器 -6 -n tcp 9999

fuser -6 -n tcp :::9999

谢谢!

4

2 回答 2

0

一个解决方法是禁用 ipv6:

添加到 /etc/modprobe.conf:

别名 net-pf-10 关闭

我不认为 fuser 喜欢 ipv6。

于 2011-04-05T15:24:59.990 回答
0

为什么它在 IPv6 上侦听?好吧,默认情况下,在 Linux 上,绑定到[::]不仅会绑定到 IPv6,还会绑定到与 IPv4 兼容的地址。IPv6 中的::ffff:0.0.0.0/96空间用于与 IPv4 兼容的连接。

软件这样做的好处是它只需要绑定到一个套接字。它使编码稍微简单一些。

并非所有发行版或操作系统都这样做。例如,Windows 要求您同时绑定[::]0.0.0.0显式绑定以支持 IPv6 或 IPv4。在 Linux 上,如果net.ipv6.bindv6onlysysctl 设置为1(就像在 Debian 上一样,但不是在大多数其他发行版上,包括 CentOS 或 Ubuntu),那么您将需要显式绑定[::]0.0.0.0支持两者。

至于如何在 中查找fuser,请这样做:

# fuser 80/tcp
80/tcp:               3052  3143  3144  3146  3147  3148

或者显示绑定到端口的进程:

# fuser -v 80/tcp
                     USER        PID ACCESS COMMAND
80/tcp:              root       3052 F.... apache2
                     www-data   3143 F.... apache2
                     www-data   3144 F.... apache2
                     www-data   3146 F.... apache2
                     www-data   3147 F.... apache2
                     www-data   3148 F.... apache2
于 2011-04-01T04:46:10.613 回答