我的tomcat为什么启不起来?

技术博客已迁移至个人页,欢迎查看 yloopdaed.icu

您也可以关注 JPP - 这是一个Java养成计划,需要您的加入。


前言

在测试服务器的使用过程,由于大家的使用没有非常规范,所以经常会出现服务启动不起来的问题。这类问题的产生经常是因为你配置的服务端口号被其他程序占用了。

那么如何定位一台服务器中端口的使用情况呢?这里推荐两个非常好用的命令

查看正在使用的端口

netstat -tnlp   

-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 显示监听套接字
-p : 显示进程标识符和程序名称,每一个套接字都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
-a : 显示全部(包括ESTABLISHED)

套接字就是socket,表示一对IP/PORT的组合。每个套接字对应一个PID,相当于给一个应用程序赋予了收发通讯协议的能力
网关,用于匹配目标IP于掩码的与运算结果,网络层完成,寻找下一跳
这里关于套接字和网关的信息不展开,等我完全理解以后可能会整理一篇博客

这里 -u 不是很常用。

查询结果以我自己的一台服务器为例:

上图中本地地址和远端地址的组合对应一个PID,其中本地地址和远端地址的组合就是一个socket。多个socket指向同一个PID,就是多路复用。

上图中本地地址 Local Address 一栏中显示出了目前所有正在监听的端口号。

以tomcat为例,从最右侧 Program name 为 java 的就是 tomcat。因为它是由 java 开发的一款 servlet 容器。

通常可以通过 jps 命令查看tomcat的PID。名称为 Bootstrap 。

为什么 tomcat 启动叫 Bootstrap?给大家留个问题,答案在/bin/startup.sh 和 /bin/catalina.sh 中

从上面的图可以看出,我这台机器的tomcat占用了两个端口:8005和8080,前者是用来监听SHUTDOWN指令的。

最后

这篇博客没有太多内容,就是分享一个好用的命令行工具,便于大家查看服务器中已经占用的端口号。这样在配置新服务的过程中可以避免因为端口被占用而浪费时间。

文章中途有一些发散的知识和问题,都是跟网络编程相关的。等我学习完成后再输出。

你可能感兴趣的:(我的tomcat为什么启不起来?)