[resin]resin 配置与使用(转帖)

[resin]resin 配置与使用(转自:http://blogger.org.cn/blog/more.asp?name=mjm0928&id=13262)

心得体会

mjm0928 发表于 2006-4-7 12:56:07

 1. <http host='localhost' port='80'/>

   host参数指定的是服务器,port指定的是http端口,默认是localhost和8080。

2. <srun host='localhost' port='6802'/> 这个是jsp和java Servlet的引擎配置。

3. 使用Resin开发Java Web项目时,需要建立自己的WebApp。

4. Resin中的应用可以有2种方式发布:

       一是在Resin的目录下发布;

       二是打包成War发布。

5. 在resin.conf中查找<web-app>标签,该标签表示一个web应用

     标签中,id属性表示该应用的Web路径。如<web-app id='/test'>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如<app-dir>d:\resin\doc\test</app-dir>表示该应用在d:\resin\doc\test目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。

 

    404文件找不到页

    <web-app id='/app1'>

     <error-page error-code='404' location='/file_not_found.jsp'/>

    </web-app>

 

    Exception 违例页

    <web-app id='/foo'>

     <error-page exception-type='java.lang.NullPointerException' location='/nullpointer.jsp'/>

    </web-app>

 

    不能连接到srun Servlet引擎错误页

 

    该页设置和应用无关,属于服务器的设置。

    <http-server>

     <error-page exception-type='connection' location='/missing_file.html'/>

    </http-server>

 

    参见下面的语句:

 

    <classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>

 

    id参数的值表示classpath中编译后的class的存放路径;

      source参数的值表示classpath中java源代码的存放路径;

      compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。

      Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。

6.  Servlet的设置

      <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>

    <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

    <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>

    一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:

    <servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>

    在Servlet中,也可以指定servlet。如

    <servlet servlet-name='hello' servlet-class='test.HelloWorld'/>

    <servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>

    在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。

7.  Session的配置

      <session-config>

    <session-max>4096</session-max>

    <session-timeout>30</session-timeout>

    <enable-cookies>true</enable-cookies>

    <enable-url-rewriting>true</enable-url-rewriting>

    <file-store>WEB-INF/sessions</file-store>

    </session-config>

 

    session-max :最大 session数量

    session-timeout :session过期时间,以分钟为单位。

    是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,

    enable-url-rewriting应该设成true比较合适。

    file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。

 

   

    

关于tomcat服务器优化,常遇到的一些简单问题的解决方法(

关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)(转自:http://www.21tx.com/dev/2005/01/14/14647.html)

http://dev.21tx.com 2005年01月14日 Blog bon_jovi

每日文章精萃

.Net:解析Visual Basic.NET事件编程 Java:结合Direct Web Remoting使用AJAX

ASP:如何在 dataGrid 上的第一列加上 Che PHP:嵌入式Web视频点播系统实现方法

JSP:在Windows NT 4.0上安装Apache+Servl CGI:Perl程序设计中常用的函数之二

VB:在VB 中调用动态连接库 VC:目录文件查找包装类

配置tomcat的时候,我想禁掉目录列表的访问。结果通过google的搜索找到了一篇不错的文章。除了我想要的,还有一些其他有用的东西。

出处:你的博客网(yourblog.org)

做JSP时,关于tomcat服务器优化,常遇到的一些简单问题的解决方法:

1.如何禁止访问目录列表:

修改tomcat x.x/conf/Web.XML内的一个属性值,就是把true 改为 false

在web.xml里找到以下代码 

<Servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>

          org.apache.catalina.servlets.DefaultServlet

        </servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

把其中的<init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

改为 <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

     </init-param>

2.如果某文件资源没有找到,服务器要报404错误,

  如果执行的某个JSP文件产生 NullPointException

  会显示一些不想异常提示代码,

  为了让用户看到更更友好的页面

  可在自己的虚拟目录的WEB-INF/web.xml中作如下的设置

<error-page>

  <error-code>404</error-code>

  <location>/notFileFound.jsp</location>

</error-page>

<error-page>

  <exception-type>Java.lang.NullPointerException</exception-type>

  <location>/null.jsp</location>

</error-page>

  同理,你也可以设置抛出其它异常时应该显示的页面!

  另外在jsp页面最上方加上这样一句话,

<%@ page isErrorPage="true" errorPage="error.jsp"%>

    也可以捕捉NullPointerException这种异常,此时转向error.jsp

3.设置session的超时时间 (单位:分钟)

<session-config>

   <session-timeout>30</session-timeout>

</session-config>

4.设置默认欢迎页面(当不输入文件名,只输入目录时起作用)

<welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

   <welcome-file>index.html</welcome-file>

   <welcome-file>index.htm</welcome-file>

</welcome-file-list>

------------------------

配置好的web.xml文件如下:

------------------------

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

   <display-name>Tomcat Examples</display-name>

    <description>

      Tomcat Example servlets and JSP pages.

   </description>

<!--

会话超时的设置

设置session 的过期时间,单位是分钟;

-->

<session-config>

<session-timeout>10</session-timeout>

</session-config>

<!-- -->

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

</welcome-file-list>

<error-page>

<error-code>404</error-code>

<location>/notFileFound.jsp</location>

</error-page>

<error-page>

<error-code>500</error-code>

<location>/common/500.jsp</location>

</error-page>

<!-- 可以对特定的Exception 捕获 -->

<error-page>

<exception-type>java.lang.NullPointerException</exception-type>

<location>/null.jsp</location> </error-page>

<!--

如果某文件资源没有找到,服务器要报404错误,按上述配置则会调用notFileFound.jsp。

如果执行的某个JSP文件产生NullPointException ,则会调用null.jsp

-->

<!--

下面的写法是错误的,少一个 /

<error-page>

<error-code>404</error-code>

<location>filenotfound.jsp</location>

</error-page>

-->

</web-app>

BSD版权翻译(转)

下面就是我们使用的BSD版权内容:(转自:http://www.postgresql.org/docs/faqs.FAQ_chinese.html)

部分版权(c)1996-2005,PostgreSQL 全球开发小组,部分版权(c)1994-1996 加州大学董事

(Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California)

允许为任何目的使用,拷贝,修改和分发这个软件和它的文档而不收取任何费用, 并且无须签署因此而产生的证明,前提是上面的版权声明和本段以及下面两段文字出现在所有拷贝中。

(Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.)

在任何情况下,加州大学都不承担因使用此软件及其文档而导致的对任何当事人的直接的, 间接的,特殊的,附加的或者相伴而生的损坏,包括利益损失的责任,即使加州大学已经建议了这些损失的可能性时也是如此。

(IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.)

加州大学明确放弃任何保证,包括但不局限于某一特定用途的商业和利益的隐含保证。 这里提供的这份软件是基于“当作是”的基础的,因而加州大学没有责任提供维护,支持,更新,增强或者修改的服务。

(THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.)

linux常用的文件重定向命令(转帖)

 默认  常用的文件重定向命令(转自:http://www.gd-linux.org/bbs/showthread.php?t=324)

command > filename      把标准输出重定向到一个新文件中

command >> filename      把标准输出重定向到一个文件中(追加)

command 1 > fielname      把标准输出重定向到一个文件中

command > filename 2>&1    把标准输出和标准错误一起重定向到一个文件中

command 2 > filename     把标准错误重定向到一个文件中

command 2 >> filename     把标准输出重定向到一个文件中(追加)

command >> filename 2>&1   把标准输出和标准错误一起重定向到一个文件中(追加)

command < filename >filename2   把command命令以filename文件作为标准输入,以filename2文件作为标准输出

command < filename    把command命令以filename文件作为标准输入

command << delimiter   把从标准输入中读入,直至遇到delimiter分界符

command <&m    把文件描述符m作为标准输入

command >&m    把标准输出重定向到文件描述符m中

command <&-    把关闭标准输入

数据库的导出与导入。

这里介绍的是数据库的导入与导出,

其实,单个数据表的导入与导出也是这些命令,

只是携带的”参数“不同而已。

具体的方法,可以在Shell中运行 “命令 --help” 来查看。

下面只是介绍常用的对数据库的导入与导出方法。

------------------------------

导出数据库。

命令:$pg_dump  testdb >  testdump.dmp

解释:将数据库testdb备份成文件testdump.dmp。包括表的建立与表中的数据。

------------------------------

导入数据库。

命令:

$create -E UTF8  testdb1

$psql  testdb1 < testdump.dmp

解释:

1、先创建一个数据库testdb1,为了将dump文件导入这个数据库,

-E选项是为了指定这个数据库的字符集。取决于导出数据库的字符集。

2、psql 命令使用重定向符”<“将dump文件导入指定的数据库。

3、导入数据库以前除了要指定数据库端的字符集,又是还要设置客户端的字符集,

由于psql是在shell下执行的命令,不能使用\encoding指令,

所以要使用pgclientencoding环境变量,

所以要在导入数据库以前要执行命令:

export pgclientencoding='UTF8'

设置客户端正确的字符集,这里设置的UTF8是一个例子而已。

对于windows用户,可能是需要执行:

SET pgclientencoding='UTF8'

我也没有试过,应该是这句。

添加和删除用户。

添加用户。

createuser 是 SQL 命令 CREATE USER的封装。

命令:createuser  [-a] [-A] [-d]  [-D] [-e] [-P] [-h 主机名] [-p  port]  用户名

说明:

[-a]:允许创建其他用户,相当于创建一个超级用户;

[-A]:不允许此用户创建其他用户;

[-d]:允许此用户创建数据库;

[-D]:不允许此用户创建数据库;

[-e]:将执行过程显示到Shell上;

[-P]:创建用户时,同时设置密码;

[-h 主机名]:为某个主机上的Postgres创建用户;

[-p  port]:与-h参数一同使用,指定主机的端口。

例子:

1、不带参数的创建用户。

$ createuser testuser

Shall the new user be allowed to create databases? (y/n) n

Shall the new user be allowed to create more new users? (y/n) n

CREATE USER

不带参数创建用户时,Postgres会询问此用户的权限。

2、为指定的主机和端口上创建用户。

$ createuser -h 172.28.18.51 -p 5000 -D -A -e testuser

CREATE USER joe NOCREATEDB NOCREATEUSER;

CREATE USER

这个命令为主机172.28.18.51的5000端口创建用户testuser,

此用户不可以创建数据库和其他用户。

3、创建超级用户。

$ createuser -P -d -a -e testuser

Enter password for new user: testuser

Enter it again: testuser

CREATE USER joe PASSWORD 'testuser' CREATEDB CREATEUSER;

CREATE USER

这个命令在本地创建一个超级用户(-a),可以创建数据库(-d),

同时要求设置密码。

由于带了创建数据库和创建用户的参数,

所以Postgres不会像例子1中那样再次询问。

--------------------------------

删除用户。

命令:dropuser [-i] [-h] [-p] [-e]  用户名

解释:

[ -i]:删除用户前,要求确认;

[-h 主机名]:删除某个主机上的Postgres用户;

[-p  port]:与-h参数一同使用,指定主机的端口;

[-e]:将执行过程显示到Shell上。

例子:

1、删除本地的Postgres用户。

$ dropuser testuser

DROP USER

2、删除远程Postgres服务器上的用户。

$ dropuser -p 5000 -h 172.28.18.51 -i -e testuser

User "testuser" and any owned databases will be permanently deleted.

Are you sure? (y/n) y

DROP USER "testuser"

DROP USER

此命令删除主机172.28.18.51(-h)的5000端口(-p)的用户testuser,

并且需要确认(-i)。

psql的常用命令。

^_^

终于可以切入正体了。

-------------------------------

连接Postgres服务器后,

可能第一件事,就是连接到一个数据库进行实际的操作了,

如果您没有在运行 psql 命令时指定连接的数据库,

那么现在可以发出指令来连接一个数据库,

当然,在运行 psql 命令时指定连接的数据库的话,

也可以使用下面这个指令来改变连接的数据库。

命令:\c  数据库名

例子:

testdb=>\c  tesdb1

这条命令将当前连接的testdb数据库改变成 testdb1 。

------------------------------

下面就来看看如何断开与Postgres服务器的连接,

命令:\q

这个命令很简单,执行这个指令后,

就回到了shell提示符下了。

------------------------------

------------------------------

将数据库 导出到 文件标识符

命令:\copy 表名 to 文件名|标准输出 [delimiter  as  '分隔符']  [null  as 'null表示的字符串' ]

        [csv  quote  as '引号的类型'] 

解释:

可以将表中的数据输出到 文件或标准输出。

delimiter as '分隔符'   :说明输出设备的文本中表的每个字段用什么字符分割,默认是tab;

null  as 'null表示的字符串':说明输出设备的文本中表的NULL值的表示方法,默认为“\N”;

csv quote as '引号类型' :说明导出的csv文件中的引号类型是什么,

对于Postgres7.4以前的版本,不支持csv的导入与导出,这时不要使用这个可选项。

例子:

testdb=>\copy  testtable to data.csv  delimiter as ',' csv quote as '"'

这条命令将testtable表中的内容作为SQL语句,导出data.csv文件中。

delimiter as ','   :说明data.txt文本中表的每个字段用“逗号”分割;

csv quote as '"' :说明csv中的引号类型是“双引号”。

像前面说的:这个例子不适用在Postgres7.4以前的版本。

------------------------------

从 文件标识符 导入数据到数据库

命令:\copy 表名 form 文件名|标准输入 [delimiter  as  '分隔符']  [null  as 'null表示的字符串' ]

        [csv  quote  as '引号的类型'] 

解释:

可以从 文件名|标准输入 两个文件设备导入到指定的表中

delimiter as '分隔符'   :说明输入设备的文本中表的每个字段用什么字符分割,

通常是tab,取决于copy出去的文件是什么参数;

null  as 'null表示的字符串':说明输入设备的文本中表的NULL值的表示方法,通常为“\N”;

csv quote as '引号类型' :说明导入的csv文件中的引号类型是什么,

取决于copy出去的文件是什么参数。

例子:

testdb=>\copy  testtable from data.csv  delimiter as ',' csv quote as '"'

这条命令将data.csv文件中的文本,作为sql语句导入到testtable表,

delimiter as ','   :说明data.txt文本中表的每个字段用“逗号”分割;

csv quote as '"' :说明csv中的引号类型是“双引号”。

------------------------------

显示和设置客户端字符集。

命令:\encoding [ encoding ]

解释:

在数据库领域,存在字符集的转换问题,

一般地,服务器端字符集是在建立数据库时指定的,

为了能够在不同的客户终端显示正确的数据,

需要认为的为客户终端设置客户端字符集。

如果服务器端的字符集是EUC_JP(日语字符集),

而客户终端的字符集是GBK,

捡索出来的汉字数据很可能就出现乱码,

所以要统一两边的字符集。

例子:

1、显示客户端字符集

testdb=>\encoding

这条命令没有带可选参数,

所以显示当前的客户终端字符集。

2、设置客户端字符集

testdb=>\encoding 'EUC_JP'

这条命令设置当前的客户终端字符集为“EUC_JP”,

如果服务器端的字符集也是“EUC_JP”,就可以正常显示数据了。

------------------------------

除了上面这些介绍,在这个客户终端可以使用所有标准SQL语句,

对数据库进行操作。

使用psql连接Postgres数据库。

前面已经介绍了Postgres的安装,

和远程连接Postgres服务器的方式,

这次就说一下如何使用Postgres。

命令:psql 【选项】 <数据库名称>

举例:

1、连接本地的Postgres服务器

psql

然后输入密码即可连接testdb。

注意:这种方式使用的很少,

因为没有带任何“选项”,

所以使用的都是默认值。

它将以当前操作系统的登陆名登陆,

并且请求连接Postgres服务器中以当前操作系统的登陆名同名的数据库。

2、连接本地的一个数据库testdb

psql testdb

然后输入密码即可连接testdb。

注意:此时连接Postgres的用户是操作系统的登陆用户。

3、指定一个用户testuser、连接本地的一个数据库testdb

psql -U testuser testdb

然后输入密码即可使用户testuser连接testdb。

注意:此时使用了“-U”选项指定一个Postgres已存在的用户。

至于如何向Postgres添加用户,后面再说。

4、指定一个用户testuser、连接远程的Postgres(172.28.18.51)的一个数据库testdb

psql -U testuser -h 172.28.18.51 testdb

然后输入密码即可使用户testuser连接到主机为172.28.18.51上的testdb。

注意:此时使用了“-h”选项指定一个远程Postgres主机的IP(或主机名)。

要想实现远程连接Postgres主机,请参看【远程连接PostgreSQL服务器。】

至此,就连接上了Postgres服务器,

提示符将变成:

数据库名=>

可以使用SQL语句进行数据库的操作了。

关于man命令的转帖2篇

在Linux下自我学习获得各类需要的知识(http://www.linuxdiyf.com/viewarticle.php?id=4056)

作者: 恒善喜   发布日期: 2005-12-04    查看数: 324    出自: http://www.linuxdiyf.com

 

转贴:

安装好了Unix/Linux类操作系统,却不知道拿它做点什么、也不知道它能做些什么……这是大多数初这朋友的疑惑。

我认为首先要做的是学会如何在Unix/Linux下获得知识,掌握学习方法。如何真有一天你要用Linux来做点什么时觉得孤立无助,你一定要学会用man命令。

man是什么?

首先在命令行输入man man回车看一下吧。把NAME和DESCRIPTION那两段英文看完了你就明白了。man是显示Unix/Linux的在线手册的命令。

典型情况下,man是用来查看一些命令、函数或文件的帮助手册的,另外它还可以显示一些gzip压缩格式的文件。

Unix/Linux的在线手册是什么?

一般情况下Linux下所有资源都会随操作系统一起发行,包括内核源代码。而在线手册是操作系统所有资源的一本很好的使用手册。你有不懂的命令时可以man一下这个命令,写程序时有不会用的函数时可以man一下该函数,甚至你不懂某个文件时都可以man一下这个文件(当然,这个文件一般来说是系统用到的一个配置文件或某个系统服务用到的配置文件)。

man手册资源的位置

一般情况下man的资源主要位于/usr/share/man目录下面。但如果你仔细看了man man的结果,并且对man.config也感兴趣并且man man.config过后,你就会明白其位置是由MANPATH变量决定的,你可以more /etc/man.config来看有哪些地方有man内容的位置。

单个man资源内容的组成

一般来说,man内容会分为NAME、SYNOPSIS、DESCRIPTION、OPTIONS、SEE ALSO、BUGS等部分。NAME是该内容的一个简单说明(一般是一句话给个定义似的);SYNOPSIS是大致说明,对于命令来说是命令的语法,对于函数来说是函数的定义;DESCRIPTION是该内容的一个简明介绍,让你对你查的内容大致有个印象;OPTIONS是在查询命令时的命令参数的详细解释;SEE ALSO是给你一些提示,相当于介绍你一些参考内容;BUGS是指明该命令或函数存在什么BUG,提醒你防止出现。

man资源的组成

有很多朋友说man资源分为8章,我觉得这只是说了主要部分,你ls /usr/share/man看一下就知道了,有man1、man2……man7、man8这样8个目录存在呢,但除了这之外还有其它的目录啊,何况还有其它的MANPATH规定的目录呢。所以具体多少章不是固定的,但Linux下大致相同内容的会归在同一个目录下,比如man1和man2目录所在的大致是一些系统命令,而man3是编程时的一些函数的用法,man5是些配置文件手册所在的目录……同样在/usr/X11R*/man目录下也有一些目录。具体是按什么来分目录的呢?各人具体根据各目录的内容理解不同了。

man资源的使用技巧

1、如果你在MANPATH变量所设定的目录(比如/usr/share/man/man1目录)里看到一个ln.1.gz的文件,那么你就可以man ln来查看fileame到底是个什么命令了。

2、man的一般用法是man SECTION name,即在指定的章节(SECTION)里查看name命令或函数的用法。但如果你不知道某个命令或函数在哪一章,你可以man -a name这样在所有MANPATH设定的地方查看name的手册。默认情况下man是显示完第一个手册页后就会退出,如果有-a参数就会搜索所有的资源了。

3、如果你觉得在Linux下看太困难或者你英文不太好想要借助“XX词霸”或“XX快译”来帮忙,那么你可以先把man手册存成文本文件然后ftp或samba共享到windows下打开来看吧。使用这么个命令就行了:

man man | col -bfp > man.txt

把man手册生成了一个man.txt文件了,借助翻译工具来看吧

4、编写自己的man资源,如果你自己写了一个非常好的函数或命令加到系统了,比如你写了一个MyDate命令来显示你需要的格式日期,那你也可以为你的MyDate命令来写个手册。很简单,你编辑(用vi或其它任何文本编辑工具都可以)一个MyDate文件,里面是你的命令使用方法说明,然后用gzip MyDate命令把这手册压缩一下生成一个MyDate.gz,然后把这个文件copy到某个MANPATH指定的目录,比如cp MyDate.gz /usr/share/man/man2,以后你就可以man MyDate来查看你的命令使用方法了。

5、安装好一个Linux操作系统后能做什么呢?你要学系统管理?就把/usr/share/man1和/usr/share/man2目录里的所有命令都man一下吧,都掌握了你绝对是系统管理专家了!想要学C编程?man一下gcc、g++、gdb等命令。或者你ls一下各个bin目录,比如/usr/bin、/bin、/sbin等,然后依次man一下你所看到的吧。

学习Linux最大的资源在你电脑上,如果你没安装,在你的光盘上一定有。想要学内核吗?赶快去看看/usr/src/linux*目录下面的所有东西吧。

 

如果你有任何疑问,讨论问题等请点击这到红联论坛中来! 网址:http://www.linux110.com/bbs

 

【论坛浏览】  【我来说两句】  【打印】  字体 【大】 【中】 【小】 

××××××××××××××××××××××××××××××××××××××××××××××

(转自:http://www.linuxforum.net/books/smth/Unix.AIX/00000006/00000014.htm)

BBS水木清华站∶精华区

发信人: NightOwl (Owlet), 信区: Unix       

标  题:  Man Pages的一些秘密 (转载)

发信站: BBS 水木清华站 (Tue Apr 18 02:44:43 2000)

 

【 以下文字转载自 Linux 讨论区 】

【 原文由 NightOwl 所发表 】

发信人: NightOwl (Demon&Daemon), 信区: Linux

标  题:  Man Pages的一些秘密

发信站: 紫 丁 香 (Mon Apr 17 13:52:30 2000), 转信

 

                            Man Pages的一些秘密

                                   --version1.0

                            ===================

                                       NightOwl

                                      2000.4.16

                            NightOwl2000@263.net

                            ===================

       这个题目也不知道过不过时。最近刚好看到又一本书上提了一下Unix下Man的格

     式和用法,然后根据"man man"的结果和平时在BBS上看到的大虾高招,就自己总结

     了一下。希望能对那些和我以前一样对Man Pages不大明白的朋友有些启发。;-)

 

       Unix/Linux里最好的说明和帮助文档我认为就是那些在线帮助Manual Pages了,

     很多时候,碰到不大明白的命令或者是一些函数的用法的时候,我就会开个man来看

     看究竟。不过以前没有细究Man Pages里的名堂,现在才算是略知一二.下面就把我所

     知的写下来,请各位补充未完尽或错误之处。(如有建议和意见,烦用EMail告知我一

     声,谢谢!)

 

        1。Unix/Linux下Man Pages的节(section)的含义说明:

 

        Header       : 标题;

        NAME         : 对你所Man的命令/函数的功能概述;

        SYNOPSIS     : 对你所Man的命令/函数用法的简单描述;

        AVAILABILITY : 可用性说明;

        DESCRIPTION  : 对你所Man的命令/函数的详细描述;

        OPTIONS      : 该命令的所有可选项的详细说明;

        RETURN VALUE : 如果是函数,则列出函数返回值;

        ERRORS       : 如果函数调用出错.则列出所有出错的值和可能引起错误的

                       原因;

        FILES        : 该命令/函数所用到的相关系统文件;

        ENVIRONMENT  : 和该命令/函数相关的环境变量;

        NOTES        : 表示不常用的用法或者是实现的细节;

        BUGS         : 已知的错误和警告(可能附有解决办法);

        HISTORY      : 该命令/函数的历史发展;

        SEE ALSO     : 可以参照的其他的相关命令/函数

        Others....   : 和一些具体命名/函数有关的特殊节

                       比如在"man"自身的Man Pages里就有一个"CAT PAGES"节用来

 

                       描述如何保存Man Pages当前的格式.

 

    举例如下:(请在你的系统中试验以获得感性了解;-)

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    $man apropos

    apropos(1)                                             apropos(1)

    NAME

       apropos - search the whatis database for strings

    SYNOPSIS

       apropos keyword ...

    DESCRIPTION

       apropos  searches a set of database files containing short

       descriptions of system commands for keywords and  displays

       the result on the standard output.

    SEE ALSO

       whatis(1), man(1).

                           Jan 15, 1991

     废话:上面大写的词就是那些"节(section)"了.

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

    2.Unix/Linux下的Man Pages的分类:

 

     你想要通过man来得到在线帮助的主题可能会在Unix/Linux里扮演很多角色。比如

    "write"既是一个命令同时它又是一个系统调用。那么怎么样才能得到你想要得到的�

    个角色的帮助呢?原来,在Unix/Linux里,Man Pages已经按功能分好了8个类别了,

    如下表所示:

 

        ------------------------------

       | 类:   |           内容:    |

        ------------------------------

       | 1 :    | 用户命令            |

       | 2 :   | 系统调用            |

       | 3 :   | C库函数             |

       | 4 :    | 设备与网络的接口    |

       | 5 :    | 文件格式            |

       | 6 :    | 游戏和演示          |

       | 7 :    | 环境、表、Troff宏   |

       | 8 :    | 系统维护            |

        ------------------------------

     <注:本表摘自本文末所注明的参考资料一>

 

       在Unix/Linux里,可以用"man n command/fuction"来得到相关的功能说明;这

   里"n"表示你所得到的功能的类号,比如,你想得到"write"作为命令时的man page,

   就用"man 1 write"这个格式,如果你想得到的是"write"作为系统调用的man page时�

   就要用"man 2 write"了。

 

        将结果对比如下:

         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

         WRITE(1)     Linux Programmer's Manual   WRITE(1)

         NAME                                           ↑

         write - send a message to another user ← 看看这里

         SYNOPSIS

         write user [ttyname]

        ++++++++++++++++++++++++++++++++++++++++++++++++++

         WRITE(2)     Linux Programmer's Manual   WRITE(2)

         NAME                                           ↑

         write - write to a file descriptor   ← 再看看这里

         SYNOPSIS

         #include <unistd.h>

         ssize_t write(int fd, const void *buf, size_t count);

         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

     3. 和Man有关的部分常用环境变量

 

        (与Man有关的环境变量可以在/etc/man.confl里设置,也可以通过命令行参数来

     设置.)

 

     MANPATH   : 如果设置了该变量,则表示man根据MANPATH指定的路径来搜索

                 man pages;

     MANSECT   : 如果设置了该变量,则表示指定要搜索那些节(section);

     MANWIDTH  : 如果设置了该变量,则表示显示的宽度;

     MANPAGER  : 该变量是用来设置显示man page的程序.如果没有设该变量,则用

                 PAGER变量的值,如果PAGER变量也没有定义,则用默认的"/usr/bin/

                 less -is"程序来显示;

 

    4.和Man Pages有关的一些技巧

 

      Question1.如何把man显示在屏幕的内容输出到文件里以便打印出来?

      Answer1 :大家可能都试过"man n foo >foo.txt"了,也发现了用编辑器看fo.txt

  时会有很多的"N^HNA^HAM^HME^HE"之类的符号,这样的结果当然不能让人满意.那么怎

  么做呢?下面的方法来自哈工大的baggio大虾:

      "man n foo | col -b > foo.txt"。

     这样一来,输出的结果就是你希望的了。原来,man为了能按照它的显示规则显示文

  本的内容,在文本里加了一些控制字符。而col命令刚好可以用来消除控制字符的。通

  过管道把man出来的结果送到col里处理一下就可以去掉那些讨厌的控制字符了。是不是

  很方便?(感谢baggio的高招!;-)

      Question2.怎么样才能知道某个主体有几种类别呢?

      Answer2 : 这个问题也得靠一个和man相关的命令来解决--"whatis",比如你可

  以用"whatis bar" 来得到bar的所有类别。"whatis bar"可以显示与bar有关的所有

  的man page的名称和类别号。你快试试看。;-)

      Question3....(我就知道这么多,其他的等你来补充;-)

      Answer3....

 

    5.后话:

 

      本来还想把man的命令行参数也写出来,想想好像用的人的不是很多就罢了(因为

    我不用)关于man的详细的介绍当然要看man的man pages了.我想通过上面的简单的描

    述 ,你应该可以很顺手的用man来看"man"的manual page了.(呵呵,一大堆"man"),我

    就不废话了.;-).

 

      另外,  如果你有别的有关于man的操作技巧,拜托请你告诉我呀.

 

   6.参考资料:

 

   (1).  <<Pratical Unix Programming, A Guide to Concurrency,Communication,

           and Mutilthreading>> Kay A. Robbins & Steven Robbins

         中译本:<<实用Unix编程>>  机械工业出版社1999.10第一版

 

   (2).  Manual Pages' "Man" page ,ie. "man man" 😉

--

�       @@@@           @@@@

     @@@@@ @@   N   @@ @@@@@         得失随缘

   \ @@@@ @ @@  i  @@ @ @@@@ /       心无增减

      @@@  @@   g   @@  @@@

        @@@     h     @@@

      \         t         /

 

 

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.179.51]

BBS水木清华站∶精华区