??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本中文字幕区,亚洲精品国产美女久久久,亚洲AV无码久久精品色欲http://m.tkk7.com/wyz191/category/19600.html走向一条通往JAVA的不归\...zh-cnTue, 27 Feb 2007 12:07:56 GMTTue, 27 Feb 2007 12:07:56 GMT60linux命o集-Q-Q整理中http://m.tkk7.com/wyz191/articles/linux.htmljava_蝈蝈java_蝈蝈Wed, 31 Jan 2007 06:06:00 GMThttp://m.tkk7.com/wyz191/articles/linux.htmlhttp://m.tkk7.com/wyz191/comments/96940.htmlhttp://m.tkk7.com/wyz191/articles/linux.html#Feedback0http://m.tkk7.com/wyz191/comments/commentRss/96940.htmlhttp://m.tkk7.com/wyz191/services/trackbacks/96940.html目录Q?br />            Q、man
            Q、help
            Q、find
            Q、nslookup
            
一?font size="5">man命o

         q个命o应该是每个Linuxpȝ上都有的。它格式化ƈ昄在线的手册页。通常使用者只要在命oman后,输入惌获取的命令的名称Q例?lsQ,man׃列出一份完整的说明Q其内容包括命o语法、各选项的意义以及相兛_令等?br />
该命令的一般Ş式ؓQ?br />
man [选项] 命o名称

命o中各选项的含义分别ؓQ?br />
-M 路径 指定搜烦man手册늚路径Q通常q个路径q境变量MANPATH预设Q如果在命o行上指定另外的\径,则覆盖MANPATH的设定?br />
-P 命o 指定所使用的分늨序,~省使用/usr/bin/less–isQ在环境变量MANPAGER中预设?br />
-S 章节 ׃一个命令名U可能会有很多类别,至于cdQ列出如下: 

章节 说明

1 、一般用者的命o
2?pȝ调用的命?br />3?C语言函数库的命o
4?有关驱动E序和系l设备的解释
5?配置文g的解?br />6?游戏E序的命?br />7?其他的Y件或是程序的命o

有关pȝl护的命? 

-a 昄所有的手册,而不是只昄W一个?br />
-d q个选项主要在检查时使用Q如果用户加入了一个新的文Ӟ可以用q个选项查是否出错,q个选项q不会列出文件内宏V?br />
-f 只显C出命o的功能而不昄其中详细的说明文件?br />
-p string 讑֮q行的预先处理程序的序Q共有下列几:

e eqn t tbl

g grap r refer

p pic v vgrind

-w 不显C手册页Q只昄被格式化和昄的文件所在位|?br />
例如Q查看cd命o的用方法?br />
$ man cd

cdQnQ?Tcl Built-In Commands cdQnQ?br />
_________________________________________________________________

NAME

cd - Change working directory

SYNOPSIS

cd ?dirName?

_________________________________________________________________

DEs criptION

Change the current working directory to dirName, or to the

home directory Qas specified in the HOME environment vari-

ableQ?if dirName is not given. Returns an empty string.

KEYWORDS

working directory

Tcl 1

QENDQ?br />
可以按q键退出man命o?br />
二、help命o

         help命o用于查看所有Shell命o。用户可以通过该命令寻求Shell命o的用法,只需在所查找的命令后输入help命oQ就可以看到所查命令的内容了。 

例如Q查看od命o的用方法?br />
$ od --help

三、find命o
 
使用说明 :  
         档案系l内W合 expression 的档案列出来。你可以指要档案的名U、类别、时间、大、权限等不同资讯的组合,只有完全相符的才会被列出来?

find Ҏ(gu)下列规则判断 path 和 expressionQ在命o列上W一个? ( ) , ! 之前的部份ؓ pathQ之后的是 expression。如果 path 是空字串则用目前\径,如果 expression 是空字串则用?print 为预设 expression?

expression 中可使用的选项有二三十个之多,在此只介l最常用的部份?

-mount, -xdev : 只检查和指定目录在同一个档案系l下的档案,避免列出其它档案pȝ中的档案 
-amin n : 在过去 n 分钟内被dq?
-anewer file : 比档案 file 更晚被读取过的档?
-atime n : 在过去 n 天过dq的档案 
-cmin n : 在过去 n 分钟内被修改q?
-cnewer file :比档案 file 更新的档?
-ctime n : 在过去 n 天过修改q的档案 
-empty : I的档案-gid n or -group name : gid 是 n 或是 group 名称是 name 
-ipath p, -path p : 路径名称W合 p 的档案,ipath 会忽略大写
-name name, -iname name : 档案名称W合 name 的档案。iname 会忽略大写
-size n : 档案大小 是 n 单位Qb 代表 512 位元l的区块Qc 表示字元敎ͼk 表示 kilo bytesQw 是二个位元组?type c : 档案cd是 c 的档案?
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档?
l: W号q结
s: socket
-pid n : process id 是 n 的档?

你可以用? ) 运式分隔Qƈ使用下列q算?
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例: 
目前目录及其子目录下所有g伸档名是 c 的档案列出来?
 # find . -name "*.c"  
 
目前目录其其下子目录中所有一般档案列?
 # find . -ftype f  
 
目前目录及其子目录下所有最q?0 分钟内更新过的档案列?
 # find . -ctime -20  

find . -name "*" -exec grep xxx {} ; -print |morexxxZ惌扄字符?/font> 

四、nslookup命o

         nslookup命o的功能是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已l设|好域名服务器,可以用q个命o查看不同L的IP地址对应的域名?br />
该命令的一般格式ؓQ?br />
nslookup [IP地址/域名]

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>



java_蝈蝈 2007-01-31 14:06 发表评论
]]>
linux下的dns讄详解http://m.tkk7.com/wyz191/articles/96828.htmljava_蝈蝈java_蝈蝈Wed, 31 Jan 2007 00:22:00 GMThttp://m.tkk7.com/wyz191/articles/96828.htmlhttp://m.tkk7.com/wyz191/comments/96828.htmlhttp://m.tkk7.com/wyz191/articles/96828.html#Feedback0http://m.tkk7.com/wyz191/comments/commentRss/96828.htmlhttp://m.tkk7.com/wyz191/services/trackbacks/96828.htmlDNS是Domain Name SystemQ它能够把Ş?a target="_blank">http://www.21php.com/q样的域名{换ؓ211.152.50.35q样的IP地址Q没有DNSQ浏?1php.comq个|站Ӟ必ȝ211.152.50.35q么难记的数字来讉K。提供DNS服务的就是DNS服务器。DNS服务器可以分ZU,高速缓存服务器QCache-only serverQ、主服务器(Primary Name serverQ、辅助服务器QSecond Name ServerQ?

DNS的详l原理、工作流E、术语、概念,限于幅Q这里就不说了。可以阅M门的文章Q如DNS-HOWTO加以了解?

②配|主DNS服务?br />首先我们做以下假设:A服务器ؓ21php.com的主域名服务器,其IP地址?1.0.0.1QB服务器ؓ21php.com的辅助域名服务器Q其IP地址?1.0.0.2Q?

下面我们配置服务?1.0.0.1?1PHP.COM的主DNS服务?

Linux下的dns功能是通过bind软g实现的。bind软g安装后,会生几个固有文Ӟ分ؓ两类Q一cL配置文g?etc目录下,一cLdns记录文g?var/named目录下。加上其他相xӞ共同讄dns服务器。下面是所有和dns讄相关文g的列表与说明?

位于/etc目录下的有:hosts,host.conf,resolv.conf,named.boot,named.conf?

1、“hosts”文Ӟ定义了主机名和ip地址的对应,其中也有要q行dnsq台?sh)脑的ip地址和主机名。内容:
127.0.0.1 localhost.localdomain localhost
2、“host.conf”文件[Boban注:原来误写成hosts.conf]Q?order hosts bind"语句Q指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允怸个主机名对应多个ip地址。内容:
order hosts, bind
multi on
nospoof on
3、“resolv.conf”文Ӟ“nameserver 10.0.0.211”指定了dns服务器的地址。注意,q个文gҎ(gu)通非dns服务器的?sh)脑Q非windows的系l;Windowspȝ是在“网l属性”中讄q项的)来说Q是必不可少的。你如果没有讄本机为dns服务器,你又要能够解析域名,必L定一个dns服务器的地址。你可以最多写上三个地址Q作为前一个失败时的候选dns服务器。“domain zrs.com”指定默认的域。文件内容:
domain 21php.com
nameserver 11.0.0.1
4、“named.boot”文件是早期版本的bind软g使用的配|文Ӟ现在新版本中已经让位于“named.conf”。named.conf是dns server配置的核心文件。下面我们一D一D늚来解说?

# named.conf - configuration for bind
#
# Generated automatically by bindconf, alchemist et al.
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

include "/etc/rndc.key";options {
directory "/var/named/";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};
zone "localhost" {
type master;
file "localhost.zone";
};
zone "21php.com" {
type master;
notify yes;
file "21php.com";
};


上文?为注释符P 其他各行含义如下Q?
diretory /var/named

指定named?/var/named 目录下读取DNS数据文gQ这个目录用户可自行指定q创建,指定后所有的DNS数据文g都存攑֜此目录下Q?

zone "." {
type hint;
file "named.ca";
};
指定named?named.ca 文g中获得Internet的顶层“根”服务器地址 ?

zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};
指定named作ؓ127.0.0|段地址转换L务器Qnamed.local文g中包含了127.0.0.*形式的地址到域名的转换数据Q?27.0.0|段地址是局域网接口的内?loopback地址Q;

zone "localhost" {
type master;
file "localhost.zone";
};
指定包含localhost的DNS文g数据存放?var/named/localhost.zone中;

zone "21php.com" {
type master;
notify yes;
file "21php.com.zone";
};
以上语句表明?1php.com的DNS数据存放?var/named/目录下的21php.com.zone中;

我们可以用文本编辑器打开/var/named/21php.com.zoneQ其内容如下Q?

$TTL 86400 @ IN SOA @ root.localhost (
2 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)

@ IN NS localhost


www IN A 11.0.0.233
www2 IN A 11.0.0.23
forum IN A 11.0.0.10
@ IN MX 5 mail.21php.com.


该文件的前部分是相应的参数设|,此部分不需要改动,后面的部分就是具体的DNS数据Q?

例如Q?

www IN A 11.0.0.233
?a target="_blank">http://www.21php.com/ 解析到地址11.0.0.233Q?

www2 IN A 11.0.0.23
www2.21php.com 解析到地址11.0.0.23Q?br />
club IN A 11.0.0.10
club.21php.com 解析到地址11.0.0.10Q?

③配|辅助DNS服务?br />
配置服务?1.0.0.2?1php.com辅助dns服务?

辅助DNS服务器,可从L务器中{UM整套域信息。区文g是从L务器中{Ud来的Qƈ作ؓ本地盘文g存储在辅助服务器中。在辅助服务器中有域信息的完整拷贝,所以也可以可以回答对该域的查询。这部分的配|内容如下:
zone "21php.com" IN {
type slave;
file "21php.com.zone";
masters { 11.0.0.1; };
};

可以看到Q和主DNS服务器不同地方就是:“type”改Z“slave”,然后指明了主DNS服务器的地址“masters { 11.0.0.1; };”。DNS服务启动Ӟ׃自动q接11.0.0.1,d21php.com域的信息Q然后保存到本机?1php.com.zone文g里?


④测试DNS服务?

改动qDNS的相应文Ӟ用“ndc restart”命令重新启动服务,在redhat 7.1以上版本中用命令:
/etc/rc.d/init.d/named restart
或?br />/etc/rc.d/init.d/named reload
使改动生效?

要测试DNSQ可以找一台客hQ把它的DNS地址设成新徏立的DNS服务器地址Q然后试试上|,收信Q下载等。也可以使用nslookup命oQ运行nslookupQ输入要查询的主机名Q看是否q回正确的ip地址Q在redhat 7.1以上版本中推荐用dig命o?br />
注:以上分别在REDHAT 6.1 REDHAT 9 试q?img src ="http://m.tkk7.com/wyz191/aggbug/96828.html" width = "1" height = "1" />

java_蝈蝈 2007-01-31 08:22 发表评论
]]>
文g~辑?vihttp://m.tkk7.com/wyz191/articles/96741.htmljava_蝈蝈java_蝈蝈Tue, 30 Jan 2007 07:20:00 GMThttp://m.tkk7.com/wyz191/articles/96741.htmlhttp://m.tkk7.com/wyz191/comments/96741.htmlhttp://m.tkk7.com/wyz191/articles/96741.html#Feedback0http://m.tkk7.com/wyz191/comments/commentRss/96741.htmlhttp://m.tkk7.com/wyz191/services/trackbacks/96741.html来自Q?/strong>LinuxSir.Org
摘要Q?/b>vi ~辑器是最常用的文档创建和~辑工具Q初学者应该学会简单应用vi Q学会在vi 中做单的修改、删除、插入、搜索及替换作业Q如果?zhn)是新手,不妨看看本文Q或许这文档能让?zhn)在最短的旉内学会vi的简单操作;

目录


+++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++


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更快.大伙试试呀!



java_蝈蝈 2007-01-30 15:20 发表评论
]]>
Tomcat catalina.sh问题http://m.tkk7.com/wyz191/articles/catalina_sh.htmljava_蝈蝈java_蝈蝈Tue, 30 Jan 2007 05:43:00 GMThttp://m.tkk7.com/wyz191/articles/catalina_sh.htmlhttp://m.tkk7.com/wyz191/comments/96714.htmlhttp://m.tkk7.com/wyz191/articles/catalina_sh.html#Feedback0http://m.tkk7.com/wyz191/comments/commentRss/96714.htmlhttp://m.tkk7.com/wyz191/services/trackbacks/96714.html  今天上午到q样一个问Q就是在向catalina.sh里添加信息<CATALINA_OPTS="-Dcom.onewaveinc.WebPro=/home/jakarta-tomcat-4.1.30/webapps/ROOT/webpro.xml"Q时Q再重新启动Tomcat׃报bin/startup.sh文g找不到的错误Q利用bin/catalina.sh start命o也不行,l过询问朋友才最l明白是什么原因.
解决Q?br />原来我是把linux服务器上的catalina.sh文g下蝲到本地后做修改,然后再传到服务器上,q时候上传的文g没有执行权限Q所以出C那种错误Q这旉要用chmod修改文g的执行权限,或者直接在服务器上修改可以了Q?/p>

感?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>

1 - 概述

脚本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"

2 - 脚本分析

#!/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



java_蝈蝈 2007-01-30 13:43 发表评论
]]>
վ֩ģ壺 һ3Ŀ| þѸƵ| ĻƵѹۿ| ձ㽶ƵۿƵ| һƵѹۿ| һƷ޶߲| ĻѸƵ | Ļ뾫ƷԴ| 鶹AVþþƷ | 99ƵѹۿƵ| avƬһ| ҳվ߿| ŷۺϾƷ˵| ձһ| һaɫƬþٸһHƬѷ | ѹۿëƬվ| ɫһ| Ļ߹ۿ| ʮ˽߹ۿƵ| þ91޾ƷĻ| 91Ѳˬ˿| Ůʮ·Ůbbw| һëƬһëƬaa| ˾ƷѴȫ| ޹Ʒþþ| 91ɫƷ| ɫƵ15| ҹ߹ۿ| 18վƬѹۿ| ijվ| ޹Ʒyw| ӰԺMV߹ۿƵ | ҹƷþþþþapp| ĻӰԺ4hu| wwwѹۿվ| þþ97ɫ | Ƭ| 91һ߹ۿ | 99߾Ʒȫmy| ĻӰӾþþ| ޹һ|