我的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指令的。

最后

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础命令 为了在 sudo 中设置权限提升,您需要编辑 sudoers 文件。 你不应该直接编辑文件,而是使用:s...
    米开朗基乐阅读 1,939评论 0 5
  • 目录 OSI七层架构 TCP/IP协议 1. TCP (1). 三次握手 SYN Flood攻击 TCP报文头 为...
    六寸光阴丶阅读 996评论 0 0
  • JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的...
    JarvisTH阅读 2,012评论 0 0
  • [toc] 操作系统 熟练使用 Linux 命令行 -> 使用 Linux 进行程序设计 -> 了解 Linux ...
    HikariCP阅读 1,298评论 1 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,550评论 16 22