[原创] 解决Linux系统上由于程序占用的文件描述符(file descriptor)过多导致的异常问题

转载需注明出处:https://www.codelast.com/

前几天发现服务器上的一个JAVA程序表现很不对劲,运行起来特别“慢”,仔细一看程序的日志,发现里面有Exception抛出,提示“too many open files”,由于无论是读写文件还是创建网络连接,都需要占用文件描述符(fd),于是怀疑是服务器上的某个程序占用的资源没有释放,达到了系统设置的上限从而导致程序异常。
Read More

[原创]一些未归类的命令、操作方法或问题总结(3)

下面是一些未归类的命令及操作方法,专门记在此文中,以便将来查询。由于文章较长,请用Ctrl+F查询关键字来定位到你需要的内容。

(1)使emacs不要生成临时文件
在emacs中编辑了文件并保存后,通常会生成一个临时文件,假设原文件名为a.txt,则生成的临时文件名为a.txt~,如果不想生成,可以在emacs配置文件 .emacs 中添加一句:
(setq-default make-backup-files nil)Read More

[原创] log4cxx在Linux下的安装、使用

简单地说,log4cxx就是一个记录日志的C++库(程序运行的时候要保存一些日志到文件,以供将来查看),它是从著名的Java日志库log4j移植而来的,并且它是Apache的一个项目,质量有保证,不用犹豫了,就用它吧!

补一句:Apache声称log4cxx的速度快、灵活性好,但是,速度快是第一位的,灵活性是第二位的("Log4cxx claims to be fast and flexible: speed first, flexibility second."),所以,担心日志记录性能的同学更可以选择log4cxx啦。

但是,这玩意的安装、编译稍微有点麻烦,如果遇到了问题,没耐心的人可能就没兴趣折腾了,我在这里把自己遇到的问题记一下。

系统环境:RHEL 5.3,64位

 

Read More

[原创]Java基础知识记录(1)

前言:本文『很傻很天真』,任何稍有Java编程经验的都不用看了。

 

(1)Java文件编译得到class文件,jar包是若干class文件(以及其他一些文件)的集合,如果要在命令行运行jar包中的一个class文件(相当于一个Java程序),可以这样做:

java -cp /root/software/tmp/XXX.jar:/root/software/tmp/lib/* com.abc.calculate.MyClass --date 20101101

其中,-cp 表示指定classpath,后面需要以分号(:)分隔的方式将所有需要用到的依赖jar包添加进来,此处添加了 /root/software/tmp/XXX.jar 包以及 /root/software/tmp/lib/ 目录下的所有jar包。

com.abc.calculate.MyClass 是要运行的jar包 XXX.jar 中的一个class文件,这么长的名字是它在jar包中的路径全名。

--date是传给 MyClass 程序命令行参数。还可以带更多的参数,要看你在Java程序中是如何写的代码。

Read More

[原创]后台运行的shell脚本对文件锁的影响

假设shell脚本A中的一段代码设置有文件锁,在此文件锁的后面(外部)以后台运行的方式调用了脚本B(此脚本中也有文件锁,但是与脚本A的锁文件不是同一个文件),并且脚本B执行时间相当之长,那么,在后台运行的脚本B在结束之后,是否会导致脚本A无法启动第二个进程呢?

下面就来做一个简单的试验,以确定上面的问题。

脚本A(parent.sh)内容如下:

#!/bin/sh
SHELL_DIR="/root/"
LOCKFILE_1=$SHELL_DIR".lock1"
{
    echo "Go into lock1."
    if ! flock -n 4; then
        echo "*** Shell is running, quit."
        exit 1
    fi
} 4<>$LOCKFILE_1

$SHELL_DIR"child.sh" &      # run shell B on background 
Read More

解决安装RPM包时循环依赖的问题

在RHEL上安装RPM包时,可能会遇到循环依赖的问题,例如:RPM包1依赖于包2,包2依赖于包3,包3又依赖于包1,好像就没办法装下去了。下面就是一例:

[root@RHEL rpm]# rpm -ivh mesa-libGL-devel-6.5.1-7.7.el5.x86_64.rpm 

warning: mesa-libGL-devel-6.5.1-7.7.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:Read More

[原创]Nagios安装、配置、问题记录(1)

 

 

转载请注明出处:http://www.codelast.com/

 

本文描述了我在使用Nagios的过程中遇到的一些问题、解决办法以及总结的注意事项。文章很长,请使用Ctrl+F定位到你需要的部分。

Nagios是一套强大的监控报警系统,但是你不花一些时间,是绝对不可能很好地配置它的。除非你只需要监控主机的alive等简单的情况(例如ping),否则请放弃幻想,以极大的耐心去研究它吧。

 

(1)默认安装情况下,Nagios的主配置文件为:/usr/local/nagios/etc/nagios.cfg

打开这个文件,可以清楚地看到它指定了其他的配置文件:

Read More

[原创]一些未归类的命令、操作方法或问题总结(2)

 

下面是一些未归类的命令及操作方法,专门记在此文中,以便将来查询。由于文章较长,请用Ctrl+F查询关键字来定位到你需要的内容。

 

(1)关于html的tagName

IHTMLElement::get_tagName方法可获取元素的tagName。tagName指的是元素的标签名。直观的效果测试,请看这个链接。

Read More