3月 02

linux 下用 cronolog 切割 tomcat catalina日誌

http://cronolog.org/下载cronolog软件。

cronolog-1.6.2.tar.gz

上传到服务器,操作如下:

# tar zxvf cronolog-1.6.2.tar.gz

# cd cronolog-1.6.2

# ./configure

# make && make install

如果安裝正常,cronolog安装完毕。开始修改tomcat。

编辑bin/catalina.sh文件。

首先找到“touch “$CATALINA_BASE”/logs/catalina.out”并注释掉,并编辑如下

elif [ “$1” = “start” ] ; then

shift
#touch “$CATALINA_BASE”/logs/catalina.out
if [ “$1” = “-security” ] ; then
echo “Using Security Manager”
shift
“$_RUNJAVA” “$LOGGING_CONFIG” $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 2>&1
| /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >>/dev/null &
# org.apache.catalina.startup.Bootstrap “$@” start
# >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &

if [ ! -z “$CATALINA_PID” ]; then
echo $! > $CATALINA_PID
fi
else
“$_RUNJAVA” “$LOGGING_CONFIG” $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 2>&1
| /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >>/dev/null &
# org.apache.catalina.startup.Bootstrap “$@” start
# >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &

if [ ! -z “$CATALINA_PID” ]; then
echo $! > $CATALINA_PID
fi
fi

重新启动tomcat,日志分割格式如下:

catalina.yyyy-mm-dd.out

cronolog 安装后所在位置,系统版本不同可能位置不一样,以 which 或whereis命令查看到的位置为准。

7月 30

oracle用nfs时mount设置

oracle归档进程写日志到NFS文件系统,与一般的在NFS文件系统上通过命令添加删除文件是不同的,要在mount NFS文件系统的时候指定一定的参数才能让归档进程正常归档。

原来是这样指定mount的:

mount -t nfs 192.168.60.110:/exitgogo /free/oracle/orarch

增加mount参数:

Mount -t nfs -o rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768 192.168.60.110:/exitgogo /free/oracle/orarch

指定参数后,归档进程就可以正常的在NFS文件系统上归档了。

指定参数具体含义如下:

rw 以读写方式安装文件系统(也必须要以相同的方式来导出)

ro 以只读方式安装文件系统

bg 如果安装失败(服务器没有响应),在后台一直尝试,继续发其它的安装请求

hard 以硬方式安装文件系统(这是默认情况)。如果服务器当机,让试图访问它的操作被阻塞,直到服务器恢复为止。

soft 以软方式安装文件系统。如果服务器当机,让试图访问它的操作失败,返回一条出错消息。这项功能对于避免进程“挂”在无关紧要的安装操作上来说非常有用。

intr 允许用户中断被阻塞的操作(并且让它们返回一条出错消息)

nointr 不允许用户中断

retrans=n 指定在以软方式安装的文件系统上,在返回一条出错消息之前重复发出请求的次数。

timeo=n 设置请求的超时时间(以十分之一秒为单位)

rsize=n 设置读缓冲的大小为n字节。对TCP和UDP安装都适用,但最优值不一样(32K较好)。

wsize=n 设置写缓冲的大小为n字节。对TCP和UDP安装都适。

nfsvers=n 设置NFS协议的版本 2 或者 3 (在正常情况下是自动的)

tcp 选择通过TCP来传输。默认选择UDP

fg 和bg正好相反,是默认的参数

mountport 设定mount的端口

7月 30

delphi多线程CreateThread函数

简单介绍多线程API 函数:
构建线程:

CreateThread(参数1,–安全属性(一般=Nil,默认安全属性)

参数2,–线程堆栈尺寸(一般=0,与主线程相同长度,而且可以根据需要自动变化)
参数3,–指向函数名指针,@函数名,这个参数十分重要,不正确将无法调用成功。
参数4,–用户需要向线程传递的参数,是一个指向结构的指针,不需传递参数时,为Nil。
参数5)–传入与线程有关的一些参数,例如:
Create_SUSPENDED 创建一个挂起的线程;
0 创建后立即激活。

7月 26

delphi7修改系统时间

添加edit和两个button,第一个button获得系统时间,第二个button按照edit中的时间设置本地系统时间。

注意:设置时间格式不要修改。delphi7通过。

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=FormatDateTime(‘yyyy-mm-dd hh:mm’,now);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
SysTime:TSystemTime;
MyTime:TDateTime;
begin
MyTime:=StrToDateTime(Edit1.Text);
DateTimeToSystemTime(MyTime,SysTime);
SetLocalTime(SysTime);
end;

7月 26

成功案例的另一面

从公司建立的时候我就在其中忙碌,至今日已近两年。我们有空的时候应该回头看一下发展的历程,说的有点客气,我自己把其称其为反思。既然是反思也就没有必要客气实实在在的解决点真正的问题。
我现在还记得那时候经常说起的一个案例“老马差点50万把腾讯卖了”,得出的结论是要坚持。我不是说坚持不对,而是要说不是所有坚持都能成功。在坚持的同时,即使再危再苦难也要非常小心步步为赢,在目前竞争激烈的市场中,稍有疏忽也会一败涂地。
在我上大学的时候也许是腾讯比较困难的时候,有很多的传言,比如包月使用,安聊天量使用,按时长使用,注册收费等种说法不一。
那时候qq的功能很少如果要收费也就是这些项目,但是后来都没有实行,在我认为这个也是最重要的决定“基础业务免费”。在同一个阶段2002年有一个很火的网站263.com,决定邮箱收费当时炒的沸沸扬扬,并且删除了一大批免费的邮箱,有些人在登陆时才知道因为收费问题自己的邮箱已经被删除了。记得2006年的时候我提起这件事情才发现一同吃饭六个人中包括我在内有三个人都因为这个原因不再去263了。至于今天的其网站的地位大家也都可以看到。难道是因为腾讯的基础业务免费才成为了行业老大吗?当然也不是,基础业务免费主要是维护客户,使客户不断增加,培养客户的使用习惯。在今天看来很多人上网的习惯是开操作系统开,打开qq和msn,之后便是打开ie浏览器。这种习惯在很多人中已经和吃饭一样,但是单靠基础业务的免费也不可能培养出这种习惯,当然企业也无法发展。在2004年后的一年多内即时通信软件遍地都是,外来的MSN、ICQ、skapy,国产的泡泡、小蜜蜂等等,捆绑的功能更是多种多样,免费到底成为最基础的承诺。四年之后的2008年腾讯在中国及时通信行业还是老大的地位,为什么?再捆绑功能的同时,不断推出新功能,在新功能中采取部分收费手段保证运营。并不是说所有改变都是成功,在某些收费业务没有达到客户期望的时候也流失了一部分客户。
在来看看当今的很多企业整天都在想如何收费,如何赚钱。有些公司还没有想如何去培养客户时,就在思考如果我们有了客户将如何去收费,甚至有些公司把半成品拿出去卖,很多功能还没有开发完已经像客户承诺功能是如何强大。在我看来外国很多的免费软件的功能远远超出国内的费软件。
请大家走好,小心一招之错满盘皆输。