用strace排除Linux服务器故障

文章作者 100test 发表时间 2011:07:04 01:17:54
来源 100Test.Com百考试题网


  strace是一个有用的小工具 – 大多数Linux系统默认已经安装 – 可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具;但是即便你不是在跟踪一个问题的时候它也是一个极好的软件。它能告诉你很多关于一个Linux程序怎样工作的信息。

  一个系统调用就是一个从应用程序到内核的消息。现代计算机系统中的用户程序都是运行在一个沙箱里面:它们不允许直接与计算机交互(因此你不能像以前那样往寄存器里面塞一些数据来完成某些工作)。取而代之的是,每当程序需要与系统交互的时候,他就发送一个请求(系统调用)到内核。Strace就是用来跟踪这些消息的。因此请记住,如果你有一会儿看不到任何strace的输出,这也并不代表你的程序发生了阻塞。很有可能是程序在自己的沙箱里面做某些事情,而这些事情并不需要与系统的其它部分发生通信。

  用法

  Strace程序固然能做这些事情,但它总是直接将所有的东西输出到标准错误文件(也就是屏幕)。就像你将看到的那样,它会产生大量的输出;因此通常来说你最好用-o选项来设置一个输出文件:

  strace -o outputfile.txt program

  有一些编辑器(如vim)能够对strace的输出进行语法高亮显示。这意味着文件的不同部分,以及每一行的不同部分都会用不同的颜色来显示。这个功能相当有用,我强烈建议你使用一个这样的编辑器来查看strace的输出。

  命令输出解释

  试一试strace -o strace.out ls –l,然后用你喜欢的编辑器打开strace.out,并且启用语法高亮。

  在深入探索细节之前,先来看看每一行的基本结构。Strace记录了程序所发出的每一次系统调用,并且各自显示在单独的一行中。系统调用的名字出现在每一行的起始,参数出现在括号里面,返回值则在等号后面,是一行的终结。命令ls –l的头几行输出基本上是如下这个样子:

  execve("/bin/ls", ["ls", "-l"], [/* 21 vars */])


相关文章


Linux中的ReiserFS文件系统
Linux日志文件中的JFS系统
如何查看Linux系统安装的时间
用PHP做负载均衡指南
用strace排除Linux服务器故障
必备的数据中心管理工具
linux关于服务的自动启动
linux下修改root密码以及找回密码的方法
手工释放linux内存
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛