Nslookup 必须要安装了TCP/IP 协议的网l环境之后才能用?
现在|络中已l架讑֥了一?DNS 服务器,L名称?linlin ,它可以把域名 www.feitium.net 解析?192.168.0.1 的IP地址Q这是我们^时用得比较多的正向解析功能?
步骤如下:
Nslookup www.feitium.net Q“回车”之后即可看到如下结果:
Server: linlin
Address: 192.168.0.5
Name: www.feitium.net
Address: 192.168.0.1
以上l果昄Q正在工作的 DNS 服务器的L名ؓ linlin Q它?IP 地址?92.168.0.5 Q而域名www.feitium.net 所对应?IP 地址?192.168.0.1 。那么,在检到 DNS 服务?linlin 已经能顺利实现正向解析的情况下,它的反向解析是否正常? 也就是说Q能否把IP地址192.168.0.1反向解析为域名www.feitium.net ?我们在命令提C符C:\>的后面键?Nslookup 192.168.0.1 Q得到结果如下:
Server: linlin
Address: 192.168.0.5
Name: www.feitium.net
Address: 192.168.0.1
q说明,DNS 服务?linlin 的反向解析功能也正常?
然而,有的时候,我们键入Nslookup www.feitium.net Q却出现如下l果Q?
Server: linlin
Address: 192.168.0.5
*** linlin can't find www.feitium.net: Non-existent domain
q种情况说明|络中DNS服务?linlin 在工作,却不能实现域?www.feitium.net的正解析。此Ӟ要分析DNS服务器的配置情况Q看是否 www.feitium.net q一条域名对应的 IP 地址记录已经dCDNS的数据库中?
q有的时候,我们键入Nslookup www.feitium.net Q会出现如下l果Q?
*** Can't find server name for domain: No response from server
*** Can't find www.feitium.net : Non-existent domain
q时Q说明测试主机在目前的网l中Q根本没有找到可以用的 DNS 服务器。此Ӟ我们要对整个|络的连通性作全面的检,q检查DNS服务器是否处于正常工作状态,采用逐步排错的方法,扑և DNS 服务不能启动的根?/p>
目录
+++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++
1、关于文本编辑器Q?br />
文本~辑器有很多Q比如图形模式的gedit、kwrite、OpenOffice ... ... Q文本模式下的编辑器有vi、vimQvi的增强版本)和nano ... ... vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下viQvimQ最单的用法Q以让Linux入门U用户在最短的旉内学会用它?/p>
nano 工具和DOS操作pȝ下的edit操作怼Q用简单,我们不作介绍了,如果(zhn)有兴趣Q不妨尝试一下;
2、vi ~辑器;
Z么要学会单应用vi
vi或vim是Linux最基本的文本编辑工Pvi或vim虽然没有囑Ş界面~辑器那L鼠标的简单操作,但vi~辑器在pȝ理、服务器理中,永远不是囑Ş界面的编辑器能比的。当(zhn)没有安装X-windows桌面环境或桌面环境崩溃时Q我们仍需要字W模式下的编辑器viQ?/p>
vi或vim ~辑器在创徏和编辑简单文档最高效的工P
3、vi ~辑器的使用Ҏ(gu)Q?br />
3.1 如何调用vi Q?br />
[root@localhost ~]# vi filename
~
~
~
~
~
~
~
~
3.2 vi 的三U命令模式;
CommandQ命令)模式Q用于输入命令;
InsertQ插入)模式Q用于插入文本;
VisualQ可视)模式Q用于视化的的高亮ƈ选定正文Q?/code>
3.3 文g的保存和退出;
Command 模式是vi或vim的默认模式,如果我们处于其它命o模式Ӟ要通过ESC键切换过来?/p>
当我们按ESC键后Q接着再输?hQvi会在屏幕的最下方{待我们输入命oQ?/p>
:w 保存Q?br />:w filename 另存为filenameQ?br />:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出;
:x 应该是保存ƈ退?Q功能和:wq!相同
3.4 光标UdQ?br />
当我们按ESCq入Command模式后,我们可以用下面的一些键位来Ud光标Q?/p>
j 向下Ud一行;
k 向上Ud一行;
h 向左Ud一个字W;
l 向右Ud一个字W;
ctrl+b 向上Ud一屏;
ctrl+f 向下Ud一屏;
向上头 向上UdQ?br />向下头 向下UdQ?br />向左头 向左UdQ?br />向右头 向右UdQ?/code>
我们~辑一个文件时Q对?j、k、l和h键,q能在这些动作命令的前面加上数字Q比?3jQ表C向下移?行?/p>
3.5 插入模式Q文本的插入Q;
i 在光标之前插入;
a 在光标之后插入;
I 在光标所在行的行首插入;
A 在光标所在行的行末插入;
o 在光标所在的行的上面插入一行;
O 在光标所在的行的下面插入一行;
s 删除光标后的一个字W,然后q入插入模式Q?br />S 删除光标所在的行,然后q入插入模式Q?/code>
3.6 文本内容的删除操作;
x 一个字W;
#x 删除几个字符Q?表示数字Q比?xQ?br />dw 删除一个单词;
#dw 删除几个单词Q?用数字表C,比如3dw表示删除三个单词Q?br />dd 删除一行;
#dd 删除多个行,#代表数字Q比?dd 表示删除光标行及光标的下两行Q?br />d$ 删除光标到行内容Q?br />J 清除光标所处的行与上一行之间的I格Q把光标行和上一行接在一P
3.7 恢复修改及恢复删除操作;
u 撤消修改或删除操作;
按ESC键返回CommandQ命令)模式Q然后按u键来撤消删除以前的删除或修改Q如果?zhn)x消多个以前的修改或删除操作,h多按几次u。这和Word的撤消操作没有太大的区别Q?/p>
3.8 可视模式Q?br />
在最新的Linux发行版本中,vi提供了可视模式,因ؓq个功能是vim才有的。如果?zhn)用的vi没有q个功能Q就换成vim有了。打开可视模式Q按ESC键,然后按vp入可视模式;
可视模式为我们提供了极ؓ友好的选取文本范围Q以高亮昄Q在屏幕的最下方昄有;
-- 可视 --
?br />--VISUAL--
如图Q?/b>
q入可视模式Q我们就可以用前面所说的命o行模式中的光标移动指令,可以q行文本范围的选取?/p>
选取文本范围有何用?
我们可以Ҏ(gu)部䆾删除作业Q按d键就删除了我们选中的内宏V?br />选中内容后,我们按ypC复Ӟ按d表示删除Q?/p>
值得一提是的删除的同时Q也表示复制。我们返回到命o模式Q然后移动光标到某个位置Q然后按shift+p键,把刚才删除的内容脓(chung)上了。我们先在这里提一句,在后文,我们q得详细说说?/p>
退出可视模式,q是用ESC键;
3.9 复制和粘帖的操作Q?br />
其实删除也带有剪切的意思,当我们删除文字时Q可以把光标Ud到某处,然后按shift+p键就把内容脓(chung)在原处,然后再移动光标到某处Q然后再按p或shift+p又能贴上Q?/p>
p 在光标之后粘帖;
shift+p 在光标之前粘?/code>
来D一例:
比如我们x一个文档的W三行复制下来,然后帖到W五行的后面Q我们应该怎么做呢Q?/p>
有两U方法;
W一U方法:
先把W三行删除,把光标移动到W三行处Q然后用dd动作Q接着再按一下shift+p键。这样就把刚才删除的W三行帖在原处了?/p>
接着我们再用k键移动光标到W五行,然后再按一下p键,q样把W三行的内容又帖到第五行的后面了Q?/p>
W二U方法;
q入可视模式Q按ESC键,然后按v键。移动鼠标指针,选中W三行的内容Q然后按y键复Ӟ再移动指针到W五行,最后按p键;
所以复制和_脓(chung)操作Q是命o模式、插入模式及可视模式的综合运用;我们要学会各U模式之间的切换Q要常用ESC键;更ؓ重要的学会在命o模式下移动光标;
3.10 关于行号Q?br />
有时我们配置一个程序运行时Q会出现配置文gX行出现错?。这时我们要用到行号相关的操作;
为所有内Ҏ(gu)加行P
按ESC键,然后输入Q?/p>
:set number
光标所处位|?/b>
在屏q的右下角,有类似如下的Q?/p>
57,8 27%
在这之中Q?7表示W?7行,8表示W?个字W;
3.11 查找和替换功能;
3.11.1 查找Q?br />
首先Q我们要q入ESC键,q入命o模式Q我们输??p入查找模式了Q?/p>
/SEARCH 注:正向查找Q按n键把光标UdC一个符合条件的地方Q?br />?SEARCH 注:反向查找Q按shift+n 键,把光标移动到下一个符合条件的
举一例:比如我想在一个文件中扑ֈswap单词Q我应该如下做;
首先按ESC键,q入命o模式Q然后输入;
/swap
?br />?swap
3.11.2 替换Q?br />
按ESC键进入命令模式;
:s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词Q替换成REPLACEQƈ把所有SEARCH高亮昄Q?br />:%s /SEARCH/REPLACE 注:把文档中所有SEARCH替换成REPLACEQ?br />:#,# s /SEARCH/REPLACE/g 注:Q号表示数字Q表CZ多少行到多少行,把SEARCH替换成REPLACEQ?/code>
注:在这之中Qg表示全局查找Q我们注意到Q就是没有替换的地方Q也会把SEARCH高亮昄Q?/p>
举例说明Q?/b>
比如我们有一文档要修改Q?/p>
我们把光标所在的行,把所有单词theQ替换成THEQ应该是Q?/p>
:s /the/THE/g
我们把整文档的所有的the都替换成THEQ应该是Q?
:%s /the/THE
我们仅仅是把W?行到W?0行中的theQ替换成THEQ应该是Q?/p>
:1,10 s /the/THE/g
4、关于本文;
我写本文的目的是让新手在最短的旉内用vi或vim创徏、编辑和修改文gQ所以说q篇文档q不是大而全的vi手册。如果把vi所有的功能都说全了Q至得写一本千늚手册Q本也没有涉及更为高U的vi用法。如果想了解的更多,h找man和helpQ?/p>
5、后讎ͼ
到目前ؓ止,关于目录和文件的操作Q我写过有几了Q从文g和目录的创徏、删除、复制到属性操作,最后到文g修改{系列文档。这些文档都是有相关性的Q如果把q些相关性的文档qv来,是一个整体知识块。我们只有掌握了q些知识Q才能实现文件系l的理?/p>
在以后我会写什么内容呢Q?Q?可能会补充一下文件的查找Q其实以前有cM文档Q到时我ȝ一下,贴出来给大家看看p了?/p>
下一步是准备|络基础文档中,|络基础比较重要Q这是我计划的下一个重炏V。。。。。。?/p>
6、参考文档;
man vi 和vi --help
Vim 实用技术:技巧,插gQ定?(Practical Vim)new (2006-3-22)
技?br />http://www-128.ibm.com/developerworks/cn/linux/l-tip-vim1/
插g
http://www-128.ibm.com/developerworks/cn/linux/l-tip-vim2/
定制
http://www-128.ibm.com/developerworks/cn/linux/l-tip-vim3/
在终端中直接输入vimtutor,有一个英文的教程,每涉及到一cL令都有一些专门设|的D落供你l习,特别方便,q样学习h更快.大伙试试呀!
感?zhn)Q知道的q是太少了,学吧Q呵呵,你就学吧Q.Q.Q.
附:
chmod命o详解
指o名称 : chmod
使用权限 : 所有用?
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的档案调用权限分ZU? 档案拥有者、群l、其他。利用 chmod 可以藉以控制档案如何被他人所调用?
参数 :
mode : 权限讑֮字串Q格式如下? [ugoa...][[+-=][rwxX]...][,...]Q其?
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群?group)者,o 表示其他以外的hQa 表示q三者皆是?
+ 表示增加权限? 表示取消权限? 表示唯一讑֮权限?
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行?
-c : 若该档案权限实已经更改Q才昄其更改动?
-f : 若该档案权限无法被更改也不要昄错误讯息
-v : 昄权限变更的详l资?
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 昄辅助说明
--version : 昄版本
范例 :档案 file1.txt 设ؓ所有h皆可d :
chmod ugo+r file1.txt
档案 file1.txt 设ؓ所有h皆可d :
chmod a+r file1.txt
档案 file1.txt 与 file2.txt 设ؓ该档案拥有者,与其所属同一个群体者可写入Q但其他以外的h则不可写入?
chmod ug+w,o-w file1.txt file2.txt
ex1.py 讑֮为只有该档案拥有者可以执行?
chmod u+x ex1.py
目前目录下的所有档案与子目录皆设ؓM人可d :
chmod -R a+r *
此外chmod也可以用数字来表C权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各ؓ一个数字,分别表示User、Group、及Other的权限?
r=4Qw=2Qx=1
若要rwx属性则4+2+1=7Q?
若要rw-属性则4+2=6Q?
若要r-x属性则4+1=7?
范例Q?
chmod a=rwx file
?
chmod 777 file
效果相同
chmod ug=rwx,o=x file
?
chmod 771 file
效果相同
若用chmod 4755 filename可此程序具有root的权?br />
catalina.sh详解Q?/font>
脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚?br />另外的脚本startup.sh和shutdown.sh都是使用不同的参数调用了该脚?br />该脚本的使用Ҏ(gu)如下Q引自该脚本本nQ:
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"
#!/bin/sh
# =============================================================
# 该脚本设|正的环境变量和系l信息,然后启动或者停止tomcat server
# 具体的操作是Q?
# 使用命o行参C为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是被执行的脚本的名称Q可以认为PRG=="catalina.sh"Q也可能是某个符号链Q指向该脚本?
PRG="$0"
# 处理了一下PRGQ等循环跛_之后PRG成ؓ ????
while [ -h "$PRG" ]; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '.*/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`/"$link"
fi
done
# PRGDIR是PRG的目录\径名U?
PRGDIR=`dirname "$PRG"`
# 执行$CATALINA_HOME/BIN/setenv.sh来设|环境变?
# [ -r filename ] 是判断是否文件存在且可读
CATALINA_HOME=`cd "$PRGDIR/.." ; pwd`
if [ -r "$CATALINA_HOME"/bin/setenv.sh ]; then
. "$CATALINA_HOME"/bin/setenv.sh
fi
# For Cygwin, 保所有的路径名都W合UNIX格式
if $cygwin; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
[ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
[ -n "$JSSE_HOME" ] && JSSE_HOME=`cygpath --path --unix "$JSSE_HOME"`
fi
# 讄用来初始化SystemClassLoader的CLASSPATH变量Q通过执行脚本setclasspath.sh完成
# 注意Q脚本setclasspath.sh改变了原来的$CLASSPATH变量Q而把它设为:
# CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$JAVA_HOME/lib/tools.jar
# 其中bootstrap.jar是package org.apache.catalina.startup的打包文Ӟ
# 含有启动Ҏ(gu)org.apache.catalina.startup.Bootstrap.main(String[] args)
# tools.jar含有javac~译器,用来把jsp文g~译成ؓservlet class
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
BASEDIR="$CATALINA_HOME"
. "$CATALINA_HOME"/bin/setclasspath.sh
else
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
echo "This file is needed to run this program"
exit 1
fi
# 在CLASSPATH环境变量后面补上一些JAR文g
# [ -n string ] 判断字符串是否长度非0Q[ -z string ] 判断字符串是否长度ؓ0
# 它们可以用来判断是否某个环境变量已经被设|?
if [ -n "$JSSE_HOME" ]; then
CLASSPATH="$CLASSPATH":"$JSSE_HOME"/lib/jcert.jar:"$JSSE_HOME"/lib/jnet.jar:"$JSSE_HOME"/lib/jsse.jar
fi
CLASSPATH="$CLASSPATH":"$CATALINA_HOME"/bin/bootstrap.jar
# 指定CATALINA_BASE变量
# 如果CATALINA_BASE没有|pCATALINA_BASE=$CATALINA_HOME
if [ -z "$CATALINA_BASE" ] ; then
CATALINA_BASE="$CATALINA_HOME"
fi
# 指定CATALINA_TMPDIR变量
# 如果CATALINA_TMPDIR没有|pCATALINA_TMPDIR=$CATALINA_BASE/temp
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
fi
# For Cygwin, 在执行javaE序前把路径名{换成WINDOWS格式
if $cygwin; then
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
CATALINA_HOME=`cygpath --path --windows "$CATALINA_HOME"`
CATALINA_BASE=`cygpath --path --windows "$CATALINA_BASE"`
CATALINA_TMPDIR=`cygpath --path --windows "$CATALINA_TMPDIR"`
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
JSSE_HOME=`cygpath --path --windows "$JSSE_HOME"`
fi
# 昄信息Q然后执行命?
echo "Using CATALINA_BASE: $CATALINA_BASE"
echo "Using CATALINA_HOME: $CATALINA_HOME"
echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
echo "Using JAVA_HOME: $JAVA_HOME"
# ......当执行catalina.sh的参数是jpda的时?.....
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-Xdebug -Xrunjdwp:transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=n"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift
fi
# ......当执行catalina.sh的参数是debug的时?.....
if [ "$1" = "debug" ] ; then
shift
if [ "$1" = "-security" ] ; then
echo "Using Security Manager"
shift
exec "$_RUNJDB" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-sourcepath "$CATALINA_HOME"/../../jakarta-tomcat-4.0/catalina/src/share \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
else
exec "$_RUNJDB" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-sourcepath "$CATALINA_HOME"/../../jakarta-tomcat-4.0/catalina/src/share \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
fi
# ......当执行catalina.sh的参数是embedded的时?.....
elif [ "$1" = "embedded" ] ; then
shift
echo "Embedded Classpath: $CLASSPATH"
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Embedded "$@"
# +----------------------------------------------------+
# | ......当执行catalina.sh的参数是run的时?..... |
# | 在当前窗口中启动tomcat服务器!Q! |
# +----------------------------------------------------+
elif [ "$1" = "run" ]; then
# 把参数runL
shift
# 如果参数是run -securityQ则启动Security Manager
if [ "$1" = "-security" ] ; then
echo "Using Security Manager"
shift
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
# 如果参数是孤单的runQ则在本H口中启动tomcat服务?
# 在本H口中启动的Ҏ(gu)是用execQ让当前q程fork一个新q程来启动tomcatQ当前进E是tomcat的父q程
# 启动tomcat的类是org.apache.catalina.startup.Bootstrap.main("start");
else
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
fi
# +----------------------------------------------------+
# | ......当执行catalina.sh的参数是start的时?..... |
# | 在新H口中启动tomcat服务器!Q! |
# +----------------------------------------------------+
elif [ "$1" = "start" ] ; then
# 把参数startL
shift
# 创徏一个文Ӟ如果文g不存在的话)$CATALINA_BASE/logs/catalina.out
touch "$CATALINA_BASE"/logs/catalina.out
# 如果参数是start -securityQ则启动Security Manager
if [ "$1" = "-security" ] ; then
echo "Using Security Manager"
shift
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
if [ ! -z "$CATALINA_PID" ]; then
echo $! > $CATALINA_PID
fi
# 如果参数是孤单的startQ那么在新窗口中启动tomcat
else
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
if [ ! -z "$CATALINA_PID" ]; then
echo $! > $CATALINA_PID
fi
fi
# +----------------------------------------------------+
# | ......当执行catalina.sh的参数是stop的时?..... |
# | 关闭tomcat服务器!Q! |
# +----------------------------------------------------+
elif [ "$1" = "stop" ] ; then
# 把参数stopL
shift
# 关闭tomcat服务器的cLorg.apache.catalina.startup.Bootstrap->main("stop");
# 注意Qjava -D 是设|系l属?
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" stop
# +----------------------------------------------------+
# | ......当执行catalina.sh的参C可L认的时?..... |
# | 打印帮助信息Q由此查看各U参C表的意义Q!Q? |
# +----------------------------------------------------+
else
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"
exit 1
fi