8080出力のnetstatをgrepするときにTomcatが表示されないのはなぜですか?

8080出力のnetstatをgrepするときに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

質問に対するコメントが十分に明確でない場合は、コメントに記載されていないヒントをいくつかご紹介します。

「8080出力に対してnetstatをgrepするときにTomcatが表示されないのはなぜですか?」
短い答え:
ポート番号8080がgrepパターンと一致しないhttp_alt文字列に変換されるためです。

詳細:
から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が表示されます。

したがって、Tomcatエントリを表示するには、netstat -pa | grep http-altまたはを使用します。netstat -pan | grep :8080

または、lsof -P | grep :8080これを使用すると、ポート8080でリッスンしているソケットのプロセスIDとプロセス名も表示されます。ここで、-Pはブロックされたポート番号を文字列(たとえばhttp-altの場合は8080)に変換します。

別のオプションはnmap $SERVERまたはですnamp localhost。 Tomcatが正しく実行されると、8080を含むすべての開いているポートが表示されます。

関連情報