搬砖头

Knocking on Heaven's Door
posts - 34, comments - 6, trackbacks - 0, articles - 0

history|grep halt
cat .bash_history|grep halt

不同的系统history文件是不一样的,
一般是$HOME目录下

查找find / -name "*history"
主要是root及oracle下的

Redhat的root
/root/.bash_history

/var/log下呀
查看wtmp文件
who wtmp.n

posted @ 2008-04-24 14:26 生活在别处 阅读(142) | 评论 (0)编辑 收藏

一、一些重要的概念(关于Linux系统的一些重要特性)
    由于我们用Windows太多,我就感觉我自己除了会点鼠标之外对于Windows系统没有太多的了解,甚至没有Linux多.
    1、文件系统结构
    2、文件类型
       一切都是文件,包括普通文件、设备文件、目录等等
    3、运行级别
       Linux有6个运行级别
    4、管道
    5、重定向
    6、交换分区
    7、根目录下各个目录的意义
二、文本编辑
    1、vi的用法
三、常用的命令
    1、基本
    包括:cd   clear  alias  unalias  date  ls  pwd  man exit  echo
    2、文件管理
    包括:cat  more  rm  head  tail  grep  cp  mv  wc find
    3、目录管理
    包括:mkdir  rmdir  rm  find  file  du  df
    4、权限命令
       如何设定我们用户和文件以及系统的权限。
       包括:chmod  chown  chgrp umask
    5、系统命令
       包括:mount  umount  uname  free  env
             uptime  setup  xinetd  top  kill  关机命令
    5、常用的网络命令
       关于网络管理以及使用的一些命令
四、安装与卸载(限于Redhat以及相似系统)
     1、RPM命令
     2、Oracle9i安装卸载以及基本管理
五、相关工具的命令
    1、FTP
    2、Telnet
六、常见的系统设置
    1、运行级别
    2、共享(NFS)
    3、修改Swap
    4、设定系统环境变量(JDK安装)
    5、系统备份(打包、压缩以及解压缩)
    6、常见的标志(权限:r w x s t 标志:l b c d)
七、Shell编程
    1、Shell变量和参数
    2、环境变量
    3、位置参数
    4、运算符
    5、常用语句
    6、函数
    7、控制
    8、运行方式
八、Linux安装
九、Crontab简单应用

以前的存档,源未知

posted @ 2008-02-21 14:24 生活在别处 阅读(298) | 评论 (0)编辑 收藏


1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off

2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT

posted @ 2008-02-21 14:22 生活在别处 阅读(851) | 评论 (0)编辑 收藏

碰到了问题,找到了解决,存档一下
关键字: jdk 字符集 linux
原因:首先,JFreeChart和中文验证码的乱码问题和jsp的编码无关,是由于Java虚拟机找不到字体文件造成的,所以同类的Swing或者AWT的中文乱码问题也适用

环境:
JDK1.5(JDK版本很重要,如果是1.4.2版本的话,JRE目录下的字体配置文件不大一样)
RedHat4.0
Tomcat5.0

解决方法:
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.重新启动tomcat,大功告成!

需要下载zysong.ttf

posted @ 2008-02-21 14:19 生活在别处 阅读(696) | 评论 (0)编辑 收藏

  • Ctrl + Shift + T:打开类型:显示"打开类型"对话框来在编辑器中打开类型。"打开类型"选择对话框显示工作空间中存在的所有类型如类、接口等
  • Ctrl + Shift + R:打开资源:打开"打开资源"对话框以打开工作空间中的任何资源。在Package Explorer中不必浏览文件便可快速打开任意一个文件。使用这个快捷键可以打开一个对话框,在里面输入你想查找的文件或者通配符既可。
  • Ctrl + O: 快速大纲:打开当前所选类型的轻量级大纲图。在一个文件中直接打开一个成员变量(如字段、方法),尤其是有许多类似的方法名的时候这个快捷键将变得非常有用。
  • Ctrl + L, 输入行数: 转至行:打开一个对话框,允许您输入编辑器应该跳至的行号。仅适用于编辑器。输入行号,可以快速跳转到源文件中的第N行,
  • Ctrl + Q:上一个编辑位置:显示上一个编辑操作的发生位置,返回到最近的修改位置。即使你查看不同的文件时,你也可以使用该快捷键来找到你最近对文件的修改位置。尤其是在文件比较大时,显得更为有用。
  • Ctrl + T: 快速类型层次结构:打开当前选择的类型的轻量级层次结构查看器,可以实现快速转到一个supertype或者subtype.
  • Ctrl + E:快速跳转到另外一个编辑器。注意Ctrl + F6也可以实现这个功能,在使用的时候可以注意一下他们的异同。
  • Ctrl + ./Ctrl +,:在一个文件中快速定位到一个问题(如错误、警告等)
  • Alt + and Alt + :来回跳转至你所查阅的文件
  • F3: 快速转到一个类型声明。同时也可以按住ctrl健并点击该超链接变量或者类或者你想查看的任何声明都可以。

  • 更多
    ctrl+space
    alt+上下箭头
    ctrl+alt+上下箭头
    ctrl|+/
    ctrl+d

    posted @ 2007-11-02 17:01 生活在别处 阅读(306) | 评论 (0)编辑 收藏

    以前碰到过,要tomcat开机启动的问题,后来用root用户启,但是风险很大
    这次碰巧看到了解决办法,赶紧收了下来
    原帖名字:ubuntu7.04 安装tomcat6
    来源:http://tristonxu.spaces.live.com/blog/cns!6C727D52D9679258!382.entry

    终于搞定了,如果仅仅安装tomcat,那是很容易的,问题是如何让他随ubuntu启动运行,这才是问题的关键!现在终于搞定了,唉...俺还是比较笨,居然用了两天的时间才解决,而且问题解决之后,才发现之前原来一直是在成功的门前徘徊。想想,人生何尝不是这样,有多少人用一辈子的时光在成功的门前晃荡...
    呵呵~还是赶紧把它记录下来吧,年纪大了阿...

    一、安装之前
    1、下载tomcat
    最新的tomcat是apache-tomcat-6.0.13.tar.gz,下载地址是:http://tomcat.apache.org/download-60.cgi

    安装之前要先安张jdk,最好选择JDK5.0以上版本吧。

    二、安装ing
    1、解压apache-tomcat-6.0.13.tar.gz到安装目录下。
    根据俺的实际情况,我把tmcat安装在/opt目录下
    shell>sudo tar zxvf apache-tomcat-6.0.13.tar.gz /opt
    解压之后,会在/opt下生成一个apache-tomcat-6.0.13文件夹

    2、在/usr/local下建立一个软链接
    shell>cd /usr/local
    shell>sudo ln -s /opt/apache-tomcat-6.0.13 tomcat6

    3、测试安装
    运行启动脚本,测试tomcat是否安装成功
    shell>sudo /usr/local/tomcat6/bin/startup.sh
    然后打开FF,用http://localhost:8080 访问tomcat。一般来讲,会成功的。呵呵~

    三、让tomcat开机启动
    根据apache网站的Document说明(这个说明也写得很差,呜呜!),要是tomcat作为一个守护程序运行,需要用到jsvc工具。(这个工具是啥玩意,俺也不懂,懒得研究,居然tomcat自带,那就最好了)
    1、准备工作
    Tomcat安装后,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户,用下面的命令:

    shell>sudo useradd -d /usr/local/tomcat6 -s /usr/sbin/nologin tomcat
    以上命令为系统增加一个tomcat用户,并且设置为nologin

    设置用户tomcat5对tomcat的权限
    shell>sudo chown -R tomcat:tomcat /usr/local/tomcat6
    shell> sudo chown -R tomcat:tomcat /opt/apache-tomcat-6.0.13

    2、安装jsvc
    shell>cd /usr/local/tomcat6/bin
    shell>sudo tar xvfz jsvc.tar.gz
    shell>cd jsvc-src
    shell>sudo sh support/buildconf.sh
    如果成功,命令终端打印出下面report:
    support/buildconf.sh: configure script generated successfully

    [注:在此之前,我的系统安装了autoconf,可以使用shell>sudo apt-get install autoconf 进行安装]
    为configure添加执行权限
    shell>sudo chmod 755 configure
    shell>sudo ./configure --with-java=/usr/lib/j2sdk1.6-sun (这是俺系统的JDK安装的位置)
    shell>sudo make

    okay!如果没有出现错误的话,jsvc就安装成功了!

    3、设置启动脚本
    接下来,就是把jsvc中带有的一个tomcat5.sh的一个模板复制到/etc/init.d目录下,然后根据自己的情况,进行修改。
    shell>sudo cp /usr/local/tomcat6/bin/jsvc-src/native/Tomcat5.sh /etc/init.d/tomcat
    上面的命令是移动文件tomcat5.sh到/etc/init.d/里面并改名为tomcat

    修改/etc/init.d/tomcat文件:
    shell>cd /etc/init.d
    shell>sudo gedit tomcat

    俺的tomcat文件修改完如下:

    #!/bin/sh
    ##############################################################################
    #
    # Copyright 2004 The Apache Software Foundation.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    # http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    ##############################################################################
    #
    # Small shell script to show how to start/stop Tomcat using jsvc
    # If you want to have Tomcat running on port 80 please modify the server.xml
    # file:
    #
    # <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
    # <Connector className="org.apache.catalina.connector.http.HttpConnector"
    # port="80" minProcessors="5" maxProcessors="75"
    # enableLookups="true" redirectPort="8443"
    # acceptCount="10" debug="0" connectionTimeout="60000"/>
    #
    # That is for Tomcat-5.0.x (Apache Tomcat/5.0)
    #
    # Adapt the following lines to your configuration
    JAVA_HOME=/usr/lib/j2sdk1.6-sun
    CATALINA_HOME=/usr/local/tomcat6
    DAEMON_HOME=/usr/local/tomcat6/bin
    TOMCAT_USER=tomcat

    # for multi instances adapt those lines.
    TMP_DIR=/var/tmp
    PID_FILE=/var/run/jsvc.pid
    CATALINA_BASE=/usr/local/tomcat6

    CATALINA_OPTS=
    CLASSPATH=\
    $JAVA_HOME/lib/tools.jar:\
    $CATALINA_HOME/bin/commons-daemon.jar:\
    $CATALINA_HOME/bin/bootstrap.jar

    case "$1" in
    start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc-src/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -pidfile $PID_FILE \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    exit $?
    ;;

    stop)
    #
    # Stop Tomcat
    #
    $DAEMON_HOME/src/native/unix/jsvc \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    exit $?
    ;;

    *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
    esac

    [注:需要修改的地方,我都用红色标出来]
    如果在其他linux系统,这样就okay了,但是在ubuntu中,还需要进行一步,就是把在rc2.d中设置一个软链接

    在/etc/rc2.d目录下建立S16apache软联接到/etc/init.d/tomcat
    shell>cd /etc/rc2.d
    shell>ln -s /etc/init.d/apache2 S16apache
    [注:rc2.d目录下的文件要以S后就数字开头,表示启动的顺序。而rc2.d中的2,表示这个目录下文件在开机时的运行级别(runlevel)为2]

    四、结束
    重新启动系统
    shell>sudo reboot -n
    启动后,就可以在FF中直接输入http://localhost:8080。如果成功,就可以看见一直可爱的kitten拉~~~



    posted @ 2007-11-02 16:40 生活在别处 阅读(1638) | 评论 (0)编辑 收藏

            项目开发中,碰到的问题,原先设计的字段,定为VARCHAR2类型,最大长度为4000 bytes,实际的应用中,内容往往超过两千汉字,没办法正常插入,因此改为clob大字段类型。
            采用Hibernate,实现Clob和Blob对象的存取, 网上有很多解决方案,但是比较老,实际运用中,可能会碰到各种问题。下面是我采用的方案,比较简单,希望对碰到这个问题的人,有帮助。
            目前oracle的driver已经支持JDBC 直接操作 CLOB了,但是使用旧的driver的时候,会遇到各种问题,如2k字符的问题。
             最新的oracle10g的driver,已经解决了这些问题。我项目用ojdbc14-10.2.0.3.0.jar 连接oracle9i数据库,可以正常读写CLOB。
             Hibernate存取Clob和Blob对象,将 clob用string方式处理。
             Hibernate Annotations方式,只要映射成Lob类型就可以,对该字段的读写,就是一般的操作方式。

            @Lob
        public String getTxt() {
            
    return txt;
        }

            好了,就是这么简单!

    posted @ 2007-11-02 16:17 生活在别处 阅读(3570) | 评论 (3)编辑 收藏

    WIN下的tomcat5的日志是按日期来记录的.移到linux下发现tomcat/logs下只有一个catalina.out件.
    时间一长.发现日志文件暴增.对于管理真是不方便.
    要是能像win下的tomcat那样分日期记录就好了.思来想去就想到用cron来分割日志文件.
    试试吧.
    先google一下.cronolog-1.6.2.tar.gz
    1.下载cronolog-1.6.2.tar.gz
    2.安装
    # tar zxvf cronolog-1.6.2.tar.gz
    # ./configure
    # make
    # make install
    搞定!
    默认是安装在/usr/local/sbin/下.
    3.配置
    重点来了.注意喽!!!
    在tomcat/bin/catalian.sh中找到
    org.apache.catalina.startup.Bootstrap "$@" start \     >> "$CATALINA_BASE"/logs/catalina.out 2&1 &
     
    把上面的内容改成:
    org.apache.catalina.startup.Bootstrap "$@" start \
    |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 &
    修改好了.重启
    #./catalina.sh start
    现去看看劳动成果吧.
    # ls /tomcat/logs/
    就会发现logs下面多了几个如同catalina.2006.06.01.log的文件了.

    posted @ 2007-10-30 10:07 生活在别处 阅读(2561) | 评论 (0)编辑 收藏

        最近发现服务器被人穷举扫描,网上找了办法搞定了

    原贴:http://blog.chinaunix.net/u/17030/showart_315674.html

    我的服务器每天都会有无数的SSH失败尝试记录,有些无聊的人一直不停的扫描,这些人真够无聊的,没事吃饱了撑着,老找些软件在那里穷举扫描,所以大家第一要记的设置一个好的够复杂的密码。

    怎么样防,如果要一条一条将这些IP阻止显然治标不治本,还好有DenyHosts软件来代替我们手搞定他。

    DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。

    DenyHosts官方网站为:http://denyhosts.sourceforge.net

    以下是安装记录(以CentOS 4.3, DenyHosts 2.5 为例)

    安装

    # cd /usr/local/src
    # wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.5.tar.gz
    # tar -zxvf DenyHosts-2.5.tar.gz
    # cd DenyHosts-2.5
    # python setup.py install

    默认是安装到/usr/share/denyhosts目录的。

    配置

    # cd /usr/share/denyhosts/
    # cp denyhosts.cfg-dist denyhosts.cfg
    # vi denyhosts.cfg

    根据自己需要进行相应的配置(解释见下文件的配置文件)

    设置启动脚本

    # cp daemon-control-dist daemon-control
    # chown root daemon-control
    # chmod 700 daemon-control

    完了之后执行daemon-contron start就可以了。

    # ./daemon-control start

    如果要使DenyHosts每次重起后自动启动还需做如下设置:

    # cd /etc/init.d
    # ln -s /usr/share/denyhosts/daemon-control denyhosts
    # chkconfig –add denyhosts
    # chkconfig –level 2345 denyhosts on

    或者修改/etc/rc.local文件:

    # vi /etc/rc.local

    加入下面这条命令

    /usr/share/denyhosts/daemon-control start

    DenyHosts配置文件:

    vi /etc/denyhosts.cfg

    SECURE_LOG = /var/log/secure
    #ssh 日志文件,它是根据这个文件来判断的。

    HOSTS_DENY = /etc/hosts.deny
    #控制用户登陆的文件

    PURGE_DENY = 5m
    #过多久后清除已经禁止的

    BLOCK_SERVICE = sshd
    #禁止的服务名

    DENY_THRESHOLD_INVALID = 1
    #允许无效用户失败的次数

    DENY_THRESHOLD_VALID = 10
    #允许普通用户登陆失败的次数

    DENY_THRESHOLD_ROOT = 5
    #允许root登陆失败的次数

    HOSTNAME_LOOKUP=NO
    #是否做域名反解

    ADMIN_EMAIL = iakuf@163.com
    #管理员邮件地址,它会给管理员发邮件

    DAEMON_LOG = /var/log/denyhosts
    #自己的日志文件

    然后就可以启动了:

    service denyhost start

    可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。


    =========================================================
    原文地址 http://www.taoran.net/tech/denyhosts.html

    DenyHosts是用Python2.3写的一个程序,它会分析/var/log/secure(redhat,Fedora Core)等日志文件,当发现同一IP在进行多次SSH密

    码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

    DenyHosts官方网站为:http://denyhosts.sourceforge.net


    一、检查安装条件

    1、首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持)
    # ldd /usr/sbin/sshd
    libwrap.so.0 => /usr/lib/libwrap.so.0 (0x0046e000)

    2、判断默认安装的Python版本
    # python -V
    Python 2.3.4

    二、已安装Python2.3以上版本的情况(以RedHat AS4为例)

    1、安装DenyHosts

    # cd /usr/local/src
    # wget http://umn.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
    # tar zxf DenyHosts-2.6.tar.gz
    # cd DenyHosts-2.6
    # python setup.py install
      
       程序脚本自动安装到/usr/share/denyhosts
       库文件自动安装到/usr/lib/python2.3/site-packages/DenyHosts
       denyhosts.py自动安装到/usr/bin

    2、设置启动脚本
    # cd /usr/share/denyhosts/
    # cp daemon-control-dist daemon-control
    # chown root daemon-control
    # chmod 700 daemon-control
    # grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
    # vi denyhosts.cfg
      根据自己需要进行相应的修改
    ----------------denyhosts.cfg------------------------
    SECURE_LOG = /var/log/secure
    #RedHat/Fedora Core分析该日志文件
    #其它版本linux根据denyhosts.cfg-dist内提示选择。

    PURGE_DENY = 30m
    #过多久后清除

    DENY_THRESHOLD_INVALID = 1
    #允许无效用户(/etc/passwd未列出)登录失败的次数

    DENY_THRESHOLD_VALID = 5
    #允许有效(普通)用户登录失败的次数

    DENY_THRESHOLD_ROOT = 3
    #允许root登录失败的次数

    HOSTNAME_LOOKUP=NO
    #是否做域名反解
    ----------------denyhosts.cfg------------------------

    如果需要DenyHosts随系统重启而自动启动,还需做如下设置:
    # vi /etc/rc.local
        加入下面这条命令
    /usr/share/denyhosts/daemon-control start

    3、启动

    # /usr/share/denyhosts/daemon-control start



    三、未安装Python2.3以上版本的情况(以RedHat AS3、Python2.2为例)

    1、安装Python最新版本的源码包,不必卸载原有低版本Python
    # cd /usr/local/src
    # wget http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
    # tar jxf Python-2.5.1.tar.bz2
    # cd Python-2.5.1
    # ./configure --prefix=/usr/local/python
    # make
    # make install

    2、安装DenyHosts
    # cd /usr/local/src
    # wget http://umn.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
    # tar zxf DenyHosts-2.6.tar.gz
    # cd DenyHosts-2.6
    # vi setup.py
      将"/usr/bin/env python"替换为"/usr/local/python/bin/python",在第一行
    # vi daemon-control-dist
      将"/usr/bin/env python"替换为"/usr/local/python/bin/python",注意有两处
    # /usr/local/python/bin/python setup.py install

       程序脚本自动安装到/usr/share/denyhosts
       库文件自动安装到/usr/local/python/lib/python2.5/site-packages/DenyHosts
       denyhosts.py自动安装到/usr/local/python/bin

    # ln -s /usr/local/python/bin/denyhosts.py /usr/bin

    posted @ 2007-10-30 10:01 生活在别处 阅读(650) | 评论 (1)编辑 收藏

    原帖地址: http://www.blogjava.net/Unmi/archive/2007/07/25/132391.html


    做了一个 Java 程序放在 Solaris 下运行,用到许多的第三方包,有 *.zip 的和 *.jar的,放在 lib 目录下,然后写了一个 shell 脚本来运行那个 java 程序,那就要在 classpath 中包含所有在 lib 中的第三方包。

    原来的做法是在 classpath中把lib目录中一个个的包文件名用冒号连缀起来,比如
    classpath=.:lib/a.jar:lib/b.jar:lib/c.jar:lib/d.zip
    java -classpath $classpath com.unmi.Main

    碰到程序升级,在lib中增加或减少了包文件,又要再重新修改那个启动 java 程序的 shell 脚本,甚是麻烦。由此想写个 shell,功能是能列举lib目录下所有第三方包,用冒号连缀成一个 classpath 变量,这样的话,无论在 lib 目录中增减包,都不需要再次修改那个启动 java 程序的 shell 脚本,就像 tomcat,无论是 common/lib 还是 app/WEB-INF/lib 中的第三方包,即放即用。

    记得在以前一个公司,有见过这样的脚本,不过记不清了,大致是用 while 循环来生成那样一个classpath 变量的。

    还好在网上有高人出手相救,在 CSDN 发了一个贴:

    http://community.csdn.net/Expert/topic/5671/5671131.xml?temp=.7013971

    过一天就有人回复,完成这一功能的代码是:

    #!/bin/sh

    _jar=`ls | grep "..*\.zip$"`
    _zip=`ls | grep "..*\.jar$"`
    _classpath="${_jar} ${_zip}"
    classpath=`echo ${_classpath} | sed -e 's/ /:/g'`
    echo ${classpath}

    这里根据我们前面的需求,是要列出 lib 目录下的 *.zip 或 *.jar 包,所以 shell 改写为:

    #!/bin/sh

    _jar=`ls lib | grep "..*\.zip$"`  #列举lib目录下的 *.zip 文件
    _zip=`ls lib | grep "..*\.jar$"`  #列举lib目录下的 *.zip 文件
    _classpath="${_jar} ${_zip}"
    classpath=`echo ${_classpath} | sed -e 's/ /:lib\//g'`   #包名前都要带个 lib/
    echo ${classpath}

    这样,你就可以使用这个 classpath 变量了

    java -classpath .:${classpath} com.unmi.Main #把当前目录 . 也加到 classpath 中

    在此非常感谢 mymtom(mymtom) 的回复。

    最后回头来想想这也就是在原来的 JRE 版本需要手工处理这些事情,如果能用上新版 6.0 Mustang JRE,就可以用它的新特性之一,classpath 通配符,java -classpath .;lib\*.jar:lib\*.zip 了,可是相信大多数同我一样,还享受不起最新版,只能暂且麻烦一些了。
    posted on 2007-07-25 21:14 Unmi 阅读(685) 评论(4)  编辑  收藏

    Feedback

    # re: [导入]Linux/Unix下读取lib目录下所有包生成classpath的Shell 2007-07-27 09:41 blackstone
    提供另一种办法

    #!/bin/sh
    #获取当前目录
    PWD=`pwd`
    for i in lib/*;
    do CLASSPATH=$PWD/$i:"$CLASSPATH";
    done

    export CLASSPATH=.:$CLASSPATH

    java Your Main Class  回复  更多评论
      

    # re: [导入]Linux/Unix下读取lib目录下所有包生成classpath的Shell 2007-07-27 13:07 Unmi
    太好,更简练了,对我来说写成下来那样子就行了

    #!/bin/sh
    CP=.
    for file in lib/*;
    do CP=${CP}:$file;
    done
    echo $CP
    #我只要用这个CP就行
      回复  更多评论
      

    # re: [导入]Linux/Unix下读取lib目录下所有包生成classpath的Shell 2007-09-30 10:38 飞猫
    这个更方便:
    CLASSPATH=`find lib -name *.jar|xargs|sed "s/ /:/g"`
    CLASSPATH=".:$CLASSPATH"
    echo $CLASSPATH

      回复  更多评论 
      
     
    DOS批处理脚本枚举 lib 目录下的 jar 和 zip 文件,拼成 classpath 的脚本

    @echo off
    setlocal EnableDelayedExpansion
    set cp=.
    for /F %%a in ('dir lib\*.jar lib\*.zip /b') do set cp=!cp!;%%a
    @echo %cp%

    posted @ 2007-10-10 16:50 生活在别处 阅读(4854) | 评论 (0)编辑 收藏

    仅列出标题
    共4页: 上一页 1 2 3 4 下一页