澳门皇冠金沙网站▎在线官网
做最好的网站

【澳门皇冠金沙网站,在线官网】Linux上进程追踪

2019-10-06 作者:网络服务   |   浏览(109)

引言:

在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用。当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行。

我们某些服务出现故障的时候,我们都是根据屏幕的输出以及打印的日志来查找出出现了什么样的错误,但是有时候我们的很多守护进程启动正常却访问不到,比如我们使用Nginx服务,登陆web的时候,却迟迟不发生页面跳转或者访问页面迟迟没反应,这个时候我们就需要对Nginx这个服务做一次进程追踪,我们使用strace/gdb这样的命令对进程做一次追踪,

这个简单而又强大的工具几乎在所有的Linux操作系统上可用,并且可被用来调试大量的程序。

strace:

澳门皇冠金沙网站,在线官网 1

1,strace命令说明

命令用法

让我们看看strace命令如何追踪一个程序的执行情况。

最简单的形式,strace后面可以跟任何命令。它将列出许许多多的系统调用。一开始,我们并不能理解所有的输出,但是如果你正在寻找一些特殊的东西,那么你应该能从输出中发现它。

Linux strace命令详解 http://www.linuxidc.com/Linux/2012-12/75671.htm

Linux strace 跟踪进程信息 http://www.linuxidc.com/Linux/2012-10/72432.htm

Linux下重量级命令strace使用介绍 http://www.linuxidc.com/Linux/2012-10/71823.htm

Linux strace解决段错误 http://www.linuxidc.com/Linux/2011-08/41308.htm

Linux进程控制--strace:追踪信号和系统调用 http://www.linuxidc.com/Linux/2011-05/35823.htm

Linux中程序执行的流程分析工具——strace http://www.linuxidc.com/Linux/2013-11/93023.htm

让我们来看看简单命令ls的系统调用跟踪情况

  1. raghu@raghu-Linoxide澳门皇冠金沙网站,在线官网,~ $ strace ls

澳门皇冠金沙网站,在线官网 2

这是strace命令输出的前几行。其他输出被截去了。

澳门皇冠金沙网站,在线官网 3

上面的输出部分展示了write系统调用,它把当前目录的列表输出到标准输出。

下面的图片展示了使用ls命令列出的目录内容(没有使用strace)。

  1. raghu@raghu-Linoxide~ $ ls

澳门皇冠金沙网站,在线官网 4

strace是能够显示用户空间发出的任何系统调用,在命令的执行过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所收到的所有信号值

选项1 寻找被程序读取的配置文件

Strace 的用法之一(除了调试某些问题以外)是你能找到被一个程序读取的配置文件。例如,

  1. raghu@raghu-Linoxide~ $ strace php 2>&1| grep php.ini

澳门皇冠金沙网站,在线官网 5

2,strace的使用

选项2 跟踪指定的系统调用

strace命令的-e选项仅仅被用来展示特定的系统调用(例如,open,write等等)

让我们跟踪一下cat命令的‘open’系统调用。

  1. raghu@raghu-Linoxide~ $ strace -e open cat dead.letter

澳门皇冠金沙网站,在线官网 6

1)strace后面直接跟我们的命令

选项3 跟踪进程

strace不但能用在命令上,而且通过使用-p选项能用在运行的进程上。

  1. raghu@raghu-Linoxide~ $ sudo strace -p 1846

澳门皇冠金沙网站,在线官网 7

澳门皇冠金沙网站,在线官网 8

选项4 strace的统计概要

它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示:

  1. raghu@raghu-Linoxide~ $ strace -c ls

澳门皇冠金沙网站,在线官网 9

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2014-10/107453p2.htm

澳门皇冠金沙网站,在线官网 10

可以看到后面跟了许多系统调用的函数,我们根据这些可以清楚的知道,我们这个命令执行时发生了那些系统调用

2)使用-p选项,这个后面跟我们的pid号,可以查看当前进程处于什么状态

我们使用-p选项后面跟着nginx的进程号

澳门皇冠金沙网站,在线官网 11

我们可以看到,当我们的nginx没有访问量的时候,进程处于epoll_wait状态

当使用ab来对nginx做一次压力测试的时候,就会发现nginx进程疯狂的做系统调用

澳门皇冠金沙网站,在线官网 12

澳门皇冠金沙网站,在线官网 13

访问数据的时候,需要处理各种数据,进程会有大量的系统调用产生

3)使用-c选项,我们可以显示进程使用系统调用的摘要信息,及使用了多少次系统调用

澳门皇冠金沙网站,在线官网 14

我们可以看到使用的read,write,open这些系统调用,以及总共产生了多少次系统调用

4)使用-o选项,我们可以将分析结构保存在某个文件中,以供后续分析使用

本文由澳门皇冠金沙网站发布于网络服务,转载请注明出处:【澳门皇冠金沙网站,在线官网】Linux上进程追踪

关键词:

  • 上一篇:SpringMVC
  • 下一篇:没有了