文档章节

Tomcat脚本简要分析

donhui
 donhui
发布于 2014/10/23 21:29
字数 1101
阅读 3220
收藏 91

Tomcat的脚本在bin目录下,有:catalina、startup、shutdown、setenv、digest、version等。
其中catalina 脚本 用于启动和关闭tomcat 服务器 ,是tomcat中最关键的脚本。
startup 脚本 和shutdown 脚本等 都是使用了不同的参数调用了catalina脚本:
startup 脚本 以start参数调用了catalina脚本,shutdown脚本以stop参数调用了catalina脚本。

catalina用法(摘自catalina脚本):
echo Usage:  catalina ( commands ... )
echo commands:
echo   debug                       Start Catalina in a debugger
echo   debug -security         Debug Catalina with a security manager
echo   jpda start                  Start Catalina under JPDA debugger
echo    run                           Start Catalina in the current window
echo   run -security             Start in the current window with security manager
echo    start                         Start Catalina in a separate window
echo   start -security           Start in a separate window with security manager
echo   stop                         Stop Catalina
echo   version                     What version of tomcat are you running?
例如:
catalina.bat start   在一个不同的窗口启动tomcat
catalina.bat run     在当前窗口启动tomcat
catalina.bat stop    关闭tomcat

digest是用指定的算法加密密码的脚本。
digest脚本用法:
Usage: RealmBase -a <algorithm> [-e <encoding>] <credentials>
例如:
digest.bat -a MD5 password
运行结果如下:
password:5f4dcc3b5aa765d61d8327deb882cf99
MD5有16位和32位,加密后的字符串为十六进制数字,是不可逆的加密算法。
16位MD5加密后的字符串是提取了32位MD5加密后的字符串的中间16位。

version脚本是catalina服务器的版本脚本, 可以查看tomcat、os、JVM的版本等。
vresion脚本用法:
catalina.bat version或 version.bat,运行结果如下:



摘录 catalina.bat 一些重要的注释
Environment Variable Prerequisites
CATALINA_HOME  May point at your Catalina "build" directory.
CATALINA_BASE   (Optional) Base directory for resolving dynamic portions of a Catalina installation. 
                             If not present, resolves to the same directory that CATALINA_HOME points to.
CATALINA_OPTS   (Optional) Java runtime options used when the "start", or "run" command is executed.
JAVA_OPTS           (Optional) Java runtime options used when the "start", "stop", or "run" command is executed.

Start/Stop Script for the CATALINA Server
译:CATALINA服务器的启动/停止脚本

Guess  CATALINA_HOME if not defined
译:如果未定义,猜测CATALINA_HOME

Copy  CATALINA_BASE from CATALINA_HOME if not defined
译:如果未定义,从CATALINA_HOME复制到CATALINA_BASE

Ensure that any user defined  CLASSPATH variables are not used on startup,
but allow them to be specified in  setenv.bat, in rare case when it is needed.
译:确保在启动时任何用户定义的CLASSPATH变量未被使用,但是如果需要在特殊情况下允许他们在setenv.bat指定

Get  standard environment variables
译:获得标准的环境变量

Get  standard Java environment variables
译:获得标准的java环境变量

Add  tomcat-juli.jar and  bootstrap.jar to classpath
tomcat-juli.jar can be over-ridden per instance
Note that there are no quotes as we do not want to introduce random
quotes into the CLASSPATH
译:将tomcat-juli.jar和bootstrap.jar添加到classpath
每个实例中tomcat-juli.jar可以被覆盖


Execute The Requested Command
译:执行需要的命令

Get remaining unshifted command line arguments and save them in the
译:获得剩余未移位的命令行参数

Execute Java with the applicable properties
译:用应用属性执行java




总结:
1、CATALINA_HOME是Tomcat的安装目录,CATALINA_BASE是Tomcat的工作目录。
     如果没有配置多个实例,CATALINA_BASE和CATALINA_HOME是一样的。
2、Tomcat默认使用JULI日志系统(可以参考官网文档修改成使用log4j)。与之相关的是 tomcat-juli.jar
3、Tomcat的启动类是Bootstrap,它承担着管理Catalina的责任。与之相关的是 bootstrap.jar
4、除了CATALINA_HOME和CATALINA_BASE环境变量,所有的环境变量都可以在“setenv”脚本指定。
     CATALINA_HOME和CATALINA_BASE环境变量不能在“setenv”脚本配置,因为他们用来定位那个文件。
5、只有在使用标准的脚本运行tomcat时才会使用“setenv”脚本;如果在windows上将tomcat安装成服务,服务包装器直接
     运行java(tomcat.exe),不使用脚本文件。
6、启动tomcat可以使用startup.bat或catalina.sh脚本,也可以使用catalina.bat/catalina.sh  start
     这样会在新窗口中启动Catalina;
     可以使用catalina.bat/catalina.sh  run则会在当前窗口启动Catalina。
7、CATALINA_OPTS允许指定启动Tomcat的java命令的附加选项。
     注意:不要用JAVA_OPTS制定内存限制, 用来停止Tomcat的进程你不需要许多内存,那些设置属于CATALINA_OPTS。
8、CATALIAN_OPTS与JAVA_OPTS不同:
      CATALIAN_OPTS和 JAVA_OPTS中的变量在 tomcat的 启动 命令"start"和"run" 被执行时使用, tomcat的 关闭 命令"stop" 被执行时只有 JAVA_OPTS 中的变量可以被 使用。
     其他应用也可能使用 JAVA_OPTS,tomcat将使用 CATALIAN_OPTS。



更多参考:
${CATALINA_HOME}/RUNNING.txt
${CATALINA_HOME}/bin



© 著作权归作者所有

donhui

donhui

粉丝 51
博文 85
码字总数 39518
作品 0
杭州
程序员
私信 提问
121 项目 012 笔记向 tomcat 部署项目

最简单的部署 直接把 war 文件复制到 webapps 目录下 配置server.xml 这种修改原有配置的方案我一般是不会用的 具体操作: 其中,docBase为设置项目的路径。 新建 context .在conf目录中,在...

小代码2016
2016/09/29
34
0
记一次Ngnix代理问题的排查

场景 网络访问关系图如下, PC浏览器需要访问到Tomcat的Web应用. 因为网络隔离, PC机所在的环境访问不了Nginx2, 所以加了一层Nginx1的网络代理. Ngnix1的简要配置如下: 然后Nginx2代理了tomca...

老菜鸟0217
2018/12/31
0
0
常用APP等日志分割与nginx日志分析脚本合集

针对app,resin,tomcat日志分割脚本 appname:填写app(包含resin/tomcat)的名字; key:过滤日志关键字,避免删除其他不必要的文件; cleanday:日志保存的周期,缺省保存30天; cleanlog:删除...

运维技术
2014/06/17
0
0
jenkins执行shell脚本,找不到环境变量

问题如摘要描述;问题原因分析参考 jenkins找不到环境变量 解决方案:在需要执行的脚本前加上 /bin/bash -l 使当前登陆用户以登陆模式执行脚本文件 案例:/bin/bash -l /opt/tomcat/tomcat16...

pxk
2017/10/19
0
0
Java 服务端 拦截 客户端发来的HTTP请求?WAF设计原理

最近想做个 WAF, 也就是Web应用程序防火墙。 既然是 Web防火墙 ,肯定是 基于 HTTP的请求分析。 (分析脚本已经完善)。 现在面临的一个问题是 JAVA如何进行 拦截到 底层的HTTP协议。 比如服...

张小天.
2014/01/10
2.2K
7

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程: * JDK 1.8 * Maven 3.5.2 * Spring Boot 2.1....

泥瓦匠BYSocket
33分钟前
2
0
$_ENV

$_ENV数组中的内容是在PHP解析器运行时,从PHP所在服务器中的环境变量, 导入到PHP的全局命名空间, 转变为PHP全局变量。 这些变量很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能...

vinci321
48分钟前
2
0
Guava RateLimiter + AOP注解实现单机限流、统计QPS

1、基于springboot项目pom.xml添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><d......

铁骨铮铮
今天
3
0
JAVA NIO Connection reset by peer 异常

客户端主动断开与服务端的连接,但是如果客户端掉线,服务端就接收不到了。。 异常信息 java.io.IOException: Connection reset by peerat java.base/sun.nio.ch.FileDispatcherImpl.read...

Jeremy_pan
今天
2
0
龙芯版办公软件下载

金山wps office   rpm包:http://ftp.loongnix.org/os/loongnix/1.0/os/Packages/w/wps-office-10.8.0.6472-1.a20p1.mips64el.rpm   deb包:http://packages.deepin.com/loongson/pool/......

gugudu
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部