1 - 概述
脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本
另外的脚本startup.sh和shutdown.sh都是使用不同的参数调用了该脚本
该脚本的使用方法如下(引自该脚本本身):
echo “Usage: catalina.sh ( commands … )”
echo “commands:”
echo " debug Start Catalina in a debugger"
echo " debug -security Debug Catalina with a security manager"
echo " embedded Start Catalina in embedded mode"
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"
2 - 脚本分析
#!/bin/sh
=============================================================
该脚本设置正确的环境变量和系统信息,然后启动或者停止tomcat server
具体的操作是:
使用命令行参数作为args的实参,调用org.apache.catalina.startup.Bootstrap.main(String[])
==============================================================
-----------------------------------------------------------------------------
Start/Stop Script for the CATALINA Server
Environment Variable Prequisites
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”,
“stop”, or “run” command is executed.
CATALINA_TMPDIR (Optional) Directory path location of temporary directory
the JVM should use (java.io.tmpdir). Defaults to
$CATALINA_BASE/temp.
JAVA_HOME Must point at your Java Development Kit installation.
JAVA_OPTS (Optional) Java runtime options used when the “start”,
“stop”, or “run” command is executed.
JPDA_TRANSPORT (Optional) JPDA transport used when the “jpda start”
command is executed. The default is “dt_socket”.
JPDA_ADDRESS (Optional) Java runtime options used when the “jpda start”
command is executed. The default is 8000.
JSSE_HOME (Optional) May point at your Java Secure Sockets Extension
(JSSE) installation, whose JAR files will be added to the
system class path used to start Tomcat.
CATALINA_PID (Optional) Path of the file which should contains the pid
of catalina startup java process, when start (fork) is used
-----------------------------------------------------------------------------
OS specific support. $var must be set to either true or false.
cygwin=false
case “uname
” in
CYGWIN*) cygwin=true;;
esac
PRG是被执行的脚本的名称,可以认为PRG==“catalina.sh”,也可能是某个符号链,指向该脚本。
PRG="$0"
处理了一下PRG,等循环跳出之后PRG成为 ???
while [ -h " P R G " ] ; d o l s = ‘ l s − l d " PRG" ]; do ls=`ls -ld " PRG"];dols=‘ls−ld"PRG"link=
expr "KaTeX parse error: Can't use function '\(' in math mode at position 13: ls" : '.*-> \̲(̲.*\)'if expr "$link" : '.*/.*' > /dev/null; then PRG="$link" else PRG=
dirname “ P R G " ‘ / " PRG"`/" PRG"‘/"link”
fi
done
PRGDIR是PRG的目录路径名称
PRGDIR=dirname "$PRG"
执行$CATALINA_HOME/BIN/setenv.sh来设置环境变量
[ -r filename ] 是判断是否文件存在且可读
CATALINA_HOME=cd "$PRGDIR/.." ; pwd
if [ -r “ C A T A L I N A H O M E " / b i n / s e t e n v . s h ] ; t h e n . " CATALINA_HOME"/bin/setenv.sh ]; then . " CATALINAHOME"/bin/setenv.sh];then."CATALINA_HOME”/bin/setenv.sh
fi
For Cygwin, 确保所有的路径名都符合UNIX格式
if c y g w i n ; t h e n [ − n " cygwin; then [ -n " cygwin;then[−n"JAVA_HOME" ] && JAVA_HOME=cygpath --unix "$JAVA_HOME"
[ -n "KaTeX parse error: Expected 'EOF', got '&' at position 18: …TALINA_HOME" ] &̲& CATALINA_HOME…CATALINA_HOME"[ -n "$CATALINA_BASE" ] && CATALINA_BASE=
cygpath --unix “ C A T A L I N A B A S E " ‘ [ − n " CATALINA_BASE"` [ -n " CATALINABASE"‘[−n"CLASSPATH” ] && CLASSPATH=cygpath --path --unix "$CLASSPATH"
[ -n “KaTeX parse error: Expected 'EOF', got '&' at position 14: JSSE_HOME" ] &̲& JSSE_HOME=`cy…JSSE_HOME”`
fi