当我 grep netstat 的 8080 输出时,为什么 Tomcat 没有出现?

当我 grep netstat 的 8080 输出时,为什么 Tomcat 没有出现?

我正在执行以下操作来确定 Tomcat 是否正在运行:

$ whoami
voops
voops@esavo00:~/apache-tomcat-7.0.57/bin#
$ ps -ef | grep -i tomcat | grep -v grep
voops     8973     1  0 Apr22 ?        00:00:40 /usr/local/jdk1.7.0_67/bin/java -Djava.util.logging.config.file=/home/voops/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/voops/apache-tomcat-7.0.57/endorsed -classpath /home/voops/apache-tomcat-7.0.57/bin/bootstrap.jar:/home/voops/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/home/voops/apache-tomcat-7.0.57 -Dcatalina.home=/home/voops/apache-tomcat-7.0.57 -Djava.io.tmpdir=/home/voops/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start

我对上述内容的理解是,tomcat 正在作为当前登录用户 (voops) 拥有的进程运行。然后我做一个:

$ netstat -a | grep 8080

..但没有任何东西被 grep 。

我的server.xml文件声明以下元素:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

netstat -an | grep 8080显示的是:

$ netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        1      0 131.176.161.23:44535        131.176.161.23:8080         CLOSE_WAIT
tcp        1      0 131.176.161.23:54600        131.176.161.23:8080         CLOSE_WAIT
tcp        1      0 131.176.161.23:51667        131.176.161.23:8080         CLOSE_WAIT
tcp        1      0 131.176.161.23:50348        131.176.161.23:8080         CLOSE_WAIT         
...  5 more lines similar to the one above

答案1

如果对问题的评论不够清楚,我在这里添加一个答案,以及这些评论中未提及的一些提示。

“当我 grep netstat 的 8080 输出时,为什么 Tomcat 没有出现?”
简短回答:
因为端口号 8080 正在转换为字符串 http_alt,这与 grep 模式不匹配。

详情 :
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers,我们可以看到端口8080是官方的“HTTP 替代 (http_alt) — 通常用于 Web 代理和缓存服务器,或作为非 root 用户运行 Web 服务器”
基本上,netstat将使用默认显示显示端口 8080 的“http-alt”。

使用时netstat -n,将显示端口号(例如 http-alt 的 8080),并且您将能够对其进行 grep。当使用 -p 运行 netstat 时,将显示侦听进程的进程 ID。

所以使用netstat -pa | grep http-altnetstat -pan | grep :8080来查看tomcat的入口。

或者,使用lsof -P | grep :8080它也将显示拥有正在侦听端口 8080 的套接字的进程 ID 和进程名称。这里 -P 将阻止端口号转换为字符串(例如 http-alt 的 8080)

另一种选择是nmap $SERVERnamp localhost,当 tomcat 运行良好时,它将显示所有开放端口,包括 8080。

相关内容