存档

2010年4月 的存档

PHP生成条码

2010年4月30日 16hot 没有评论

使用PHP来生成条码,找到了一个开源的程序php-barcode。

网站首页: http://www.ashberg.de/php-barcode/index.php

下载地址: http://www.ashberg.de/php-barcode/download/

需要安装barcodegenbarcode。我是在FreeBSD下安装的。barcode就直接在ports里安装了。

安装barcode:

# cd /usr/ports/graphics/barcode
# make install clean

安装genbarcode:

# tar -zxf genbarcode-0.4.tar.gz
# cd genbarcode-0.4
# gmake
# gmake install

安装php-barcode:

在WEB目录下:

# tar -zxf php-barcode-0.3pl1.tar.gz
# mv php-barcode-0.3pl1 phpbarcode
# chmod -R 755 phpbarcode

访问:

* http://localhost/barcode.php?code=012345678901
* http://localhost/barcode.php?code=012345678901&encoding=EAN&scale=4&mode=png

条码图

分类: PHP 标签:

Enable core dump in Linux and FreeBSD(转)

2010年4月26日 16hot 没有评论

Just a note.

You can enable core dump by:

[bash] edit /etc/profile

ulimit -c unlimited

[csh/tcsh] edit /etc/csh.cshrc

limit coredumpsize unlimited

You can disable core dump by:

[bash] edit /etc/profile

ulimit -c 0

[csh/tcsh] edit /etc/csh.cshrc

limit coredumpsize 0

On FreeBSD, you also need to check the setting of kern.coredump:

# sysctl -a |grep kern.coredump
kern.coredump: 0
# sysctl kern.coredump=1
kern.coredump: 0 -> 1
# sysctl -a | grep kern.coredump
kern.coredump: 1

You can enforce this setting in /etc/sysctl.conf

[2008/01/01] Thanks for the complement from gslin, kern.sugid_coredump controls the core dump for setuid/setgid process in FreeBSD.

分类: BSD/linux, 转载 标签: , ,

网站排障分析常用的命令 (转)

2010年4月23日 16hot 2 条评论

网站排障分析常用的命令

好久没有发贴了,
整理一些常用分析网站的小命令方便大家排障,内容均来源于网络。
如果你是初学者关于AWK应用技巧请参照论坛的脚本编程版块,
如果你是老手,什么好的命令集或者必杀技欢迎跟贴,丰富此贴!
TXT版:http://docs.linuxtone.org/webapp/webscan.txt
系统连接状态篇:
1.查看TCP连接状态
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”\t”,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”\t”,arr[k]}’

netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn

netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c

2.查找请求数请20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

3.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接
netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

6.根据端口列进程
netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

网站日志分析篇1(Apache):

1.获得访问前10位的ip地址
cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

2.访问次数最多的文件或页面,取前20
cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)
cat access.log |awk ‘($7~/\.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数
cat access.log |awk ‘($10 > 200000 && $7~/\.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk ‘($7~/\.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件
cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)
cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9.统计404的连接
awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

10. 统计http status.
cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn

10.蜘蛛分析
查看是哪些蜘蛛在抓取内容。
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'

网站日分析2(Squid篇)

2.按域统计流量
zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl

数据库篇
1.查看数据库执行的sql
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

系统Debug分析篇

1.调试命令
strace -p pid

2.跟踪指定进程的PID
gdb -p pid

更多的请参考:
http://bbs.linuxtone.org/forum-14-1.html

分类: BSD/linux, 转载 标签:

将服务器的系统升级到FreeBSD-7.3 RELEASE

2010年4月23日 16hot 没有评论

最近看到FreeBSD 7.2即将停止支持的消息。 原文地址: FreeBSD 7.2官方支持即将结束

遂下定决心将服务器的系统升级下。其实早在7.3RELEASE出来没几天,就已经将源码更新好了,又忙别的事情去了,还一直没有更新。

今天看到这个消息,利用点点时间升级了下。

分类: BSD/linux 标签:

巧儿住院了

2010年4月8日 16hot 没有评论

今天是预产期,之前一点状况都没有,早上见了点红。今天去医院做常规检查,B超发现羊水偏少了。医生安排住院观测。

上午住院部的主任医师不在,那些医生或者护士说可能要再做检查,不排除要催产。当时我心理很着急,本来以为只是见点红,不需要住院。没想到因为羊水偏少,要求住院了。住院需要的东西都没有带呢。

中午回来拿了东西,过去后,巧儿说医生给看过了,问题不大,再观察,下周一还没有自然分娩,再打催产素。

听了之后,心终于放下来了。给爸爸妈妈打电话,告诉他们这个新的情况,好让他们也安心些。

下午在那里陪着巧儿,晚上她妈妈在医院陪着,我8点才回到家。还得准备些东西带去。

很累,早上5点多就醒了,6点多起来去医院,一直没停,很困。

分类: 16hot 杂记 标签:

在FreeBSD下安装Mac4Lin导致openoffice崩溃的解决

2010年4月3日 16hot 没有评论

安装了Mac4Lin桌面风格后,OpenOffice运行到出现启动界面,接着就消失了,没有正常运行。

通过truss检查:

truss /usr/local/openoffice.org-3.2.0/openoffice.org3/program/soffice.bin

发现下面这段信息:

access(“/home/ymm/.fonts/Aquabase-spanish-support.ttf”,4) = 0 (0×0)
open(“/home/ymm/.fonts/Aquabase-spanish-support.ttf”,O_RDONLY,00) = 32 (0×20)
fstat(32,{ mode=-rw-r–r– ,inode=3603497,size=174420,blksize=4096 }) = 0 (0×0)
mmap(0×0,174420,PROT_READ,MAP_SHARED,32,0×0)     = 778002432 (0x2e5f6000)
close(32)                                        = 0 (0×0)
SIGNAL 11 (SIGSEGV) // 启动崩溃信号

是加载Aquabase-spanish-support.ttf字体文件时导致OpenOffice而崩溃的。

只需要把这个字体去掉,问题就解决了:

mv /home/ymm/.fonts/Aquabase-spanish-support.ttf /home/ymm/.fonts/Aquabase-spanish-support.ttf.bak

之后启动运行正常了。

分类: BSD/linux 标签: , ,

在FreeBSD 安装php-fpm 5.2.12

2010年4月2日 16hot 没有评论

php-fpm的freebsd ports只到5.2.11就没有更新了。但是其他php的扩展都升级到了5.2.12。调试程序的时候出现异常情况。就自己动手修改了php-fpm的ports配置文件。

Makefile 补丁:

— ../php5-fpm/Makefile        2009-10-13 05:53:43.000000000 +0800
+++ Makefile    2010-04-02 21:08:21.000000000 +0800
@@ -7,7 +7,7 @@

PORTNAME=      php5-fpm
PORTVERSION=   ${PHP_VERSION}
-PHP_VERSION=   5.2.11
+PHP_VERSION=   5.2.12
PHPFPM_VERSION= 0.6.3
PORTREVISION?= 0
CATEGORIES?=   lang devel www

distinfo补丁:

— ../php5-fpm/distinfo        2009-10-13 05:41:42.000000000 +0800
+++ distinfo    2010-04-02 21:13:46.000000000 +0800
@@ -1,12 +1,12 @@
-MD5 (php-5.2.11.tar.bz2) = 286bf34630f5643c25ebcedfec5e0a09
-SHA256 (php-5.2.11.tar.bz2) = 9bcd14ceda2b4bd7abcc7eb59bd74bae490d9335e4207580de783b48aa7e8f23
-SIZE (php-5.2.11.tar.bz2) = 9030787
+MD5 (php-5.2.12.tar.bz2) = 5b7077e366c7eeab34da31dd860a1923
+SHA256 (php-5.2.12.tar.bz2) = e65756a8412726a491ca48da1e0693eaeb3f38f19fb6cbc8f53005cab1f2491a
+SIZE (php-5.2.12.tar.bz2) = 9075161
MD5 (php-fpm-0.6.3.tar.bz2) = be0d67a73474f2273b8d90447d057fc2
SHA256 (php-fpm-0.6.3.tar.bz2) = 1233ce7b19c90e159474af13548541617ceead85887b201f752bc1bbbe3e4905
SIZE (php-fpm-0.6.3.tar.bz2) = 1909302
-MD5 (suhosin-patch-5.2.11-0.9.7.patch.gz) = 8f9de4d97fae6eba163cf3699509a260
-SHA256 (suhosin-patch-5.2.11-0.9.7.patch.gz) = 392f10c9b7d9c47f30e989fb7775cc46d36153b933bf7ac9ccd8826b2954584b
-SIZE (suhosin-patch-5.2.11-0.9.7.patch.gz) = 23050
+MD5 (suhosin-patch-5.2.12-0.9.7.patch.gz) = 40be1b05ad893a01778d7fb323dd8872
+SHA256 (suhosin-patch-5.2.12-0.9.7.patch.gz) = f324cf09cb83826fb35308c890ca06e14d64e5d65129f3ba8f3e61953e442366
+SIZE (suhosin-patch-5.2.11-0.9.7.patch.gz) = 23062
MD5 (php-5.2.10-mail-header.patch) = 7f73682e78d32e22989c3fb3678d668b
SHA256 (php-5.2.10-mail-header.patch) = a61d50540f4aae32390118453845c380fe935b6d1e46cef6819c8561946e942f
SIZE (php-5.2.10-mail-header.patch) = 3383

在编译安装的过程中,会报libevent错误:

../libevent/.libs/libevent.a: could not read symbols: File format not recognized
*** Error code 1

Stop in /usr/ports/lang/php5-fpm/work/php-fpm-0.6.3/src.
*** Error code 1

Stop in /usr/ports/lang/php5-fpm/work/php-fpm-0.6.3/src.
*** Error code 1

Stop in /usr/ports/lang/php5-fpm/work/php-fpm-0.6.3/src.
*** Error code 1

Stop in /usr/ports/lang/php5-fpm/work/php-fpm-0.6.3.
*** Error code 1

解决办法:

# cd work/php-fpm-0.6.3/libevent/
# make clean
# cd ../../../
# make install clean

分类: BSD/linux, PHP 标签: , ,