一、命令介绍

strace 常用来跟踪进程执行时的系统调用和所接收的信号。在Linux 世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace 可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

二、参数说明

  • -p:跟踪指定的进程。
  • -f:跟踪由fork 子进程系统调用。
  • -F:尝试跟踪vfork 子进程系统调吸入,与-f 同时出现时, vfork 不被跟踪。
  • -o filename:默认strace 将结果输出到stdout。通过-o 可以将输出写入到filename 文件中。
  • -ff:常与-o 选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID 文件。
  • -r:打印每一个系统调用的相对时间。
  • -t:在输出中的每一行前加上时间信息。-tt 时间确定到微秒级。还可以使用-ttt 打印相对时间。
  • -v:输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出。
  • -s:指定每一行输出字符串的长度,默认是32。文件名一直全部输出。
  • -c:统计每种系统调用所执行的时间,调用次数,出错次数。
  • -d:输出strace 关于标准错误的调试信息。
  • -h:输出简要的帮助信息。
  • -i:输出系统调用的入口指针。
  • -q:禁止输出关于脱离的消息。
  • -tt:在输出中的每一行前加上时间信息,微秒级。
  • -T:显示每一调用所耗的时间。
  • -V :输出strace 的版本信息。
  • -x:以十六进制形式输出非标准字符串。
  • -xx:所有字符串以十六进制形式输出。
  • -u:以username的UID和GID执行被跟踪的命令
  • -e expr:指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]
  •   qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\\.
  •   -e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all
  •   -e trace=file 只跟踪有关文件操作的系统调用
  •   -e trace=process 只跟踪有关进程控制的系统调用
  •   -e trace=network 跟踪与网络有关的所有系统调用
  •   -e strace=signal 跟踪所有与系统信号有关的 系统调用
  •   -e trace=ipc 跟踪所有与进程通讯有关的系统调用
  •   -e abbrev=set 设定strace输出的系统调用的结果集。-v 等与 abbrev=none.默认为abbrev=all
  •   -e raw=set 将指定的系统调用的参数以十六进制显示
  •   -e signal=set 指定跟踪的系统信号.默认为all。如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号
  •   -e read=set 输出从指定文件中读出 的数据。例如: -e read=3,5
  •   -e write=set 输出写入到指定文件中的数据

三、具体用法介绍

1、跟踪指定进程

Linux监控命令之==>strace的更多相关文章

  1. linux监控命令全覆盖(图文说明)

    1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...

  2. Linux监控命令整理(top,free,vmstat,iostat,mpstat,sar,netstat)

    1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...

  3. linux 监控命令

    先总结下常用的一些监控工具: ##linux命令 w 系统负载 lsof -p pid 进程打开的文件 lsof -i:port 端口的运行情况 free -m 内存情况 vmstat 进程.内存.内 ...

  4. Linux监控命令之==>sar

    一.使用说明 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率.内存使用状况.进程活动及 ...

  5. linux监控命令nc用法

    一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程. -w <超时秒数> 设置等待连线的时间. -u 表示使用UDP协议 -z 使 ...

  6. Linux监控命令之==>lsof

    一.命令说明 lsof 命令的原始功能是列出打开的文件的进程,但LINUX 下,所有的设备都是以文件的行式存在的,所以,lsof 的功能很强大. 二.参数说明 -a :列出打开文件存在的进程 -c&l ...

  7. Linux监控命令之==>free

    一.命令说明 free 命令显示系统内存的使用情况:包括物理内存.交换内存(swap)和内核缓冲区内存 二.参数说明 -b -k -m -g:分别以字节.KB.MB.GB为单位显示内存使用情况 -l: ...

  8. Linux监控命令之==>top

    一.命令说明 top 命令能够实时监控系统的运行状态,并且可以按照CPU.内存和执行时间进行排序,同时top 命令还可以通过交互式命令进行设定显示,通过top 命令可以查看即时活跃的进行. 二.参数说 ...

  9. Linux监控命令

    dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2它不是一个专业的测试工具,不过如果对于 ...

随机推荐

  1. zabbix的简单操作(监控客户端MySQL数据包库)

    环境准备: 192.168.175.102    zabbix服务端 192.168.175.106    zabbix客户端(监控MySQL) 命令:iptables -F        #清空防火 ...

  2. java字符串函数用法汇总

    替换字符串中的字符 例如有如下x的字符串 String x = "[kllkklk\kk\kllkk]"; 要将里面的"kk"替换为++,可以使用两种方法得到相 ...

  3. 从rc文件访问字符串

    有.rc文件,其中包含用于exe文件详细信息的版本,说明等. 如何获得在代码内使用的值?例如,要获取ProductName. IDI_ICON1 ICON DISCARDABLE "abc- ...

  4. javasctipt之DOM知识点

    一:DOM节点 子节点:childNodes 父节点:parentNode offsetPrent 二:元素属性操作 方式一:xxx.style.xxx 方式二:xxx.style["xxx ...

  5. C++内存泄漏的几种情况

    1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存:二是在类的构造函数中动态的分配了 ...

  6. python字典的setdefault的妙用

    现在有一个员工字典,类似这样的结构 staff_dic = {"name":"灭霸", "age": 10000, "hobbie ...

  7. C# 获取应用程序几种方式的区别

    // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory        这种方式 无论什么权限  获取的也只是应用程序的启动路径 // 获取模块 ...

  8. Java多线程和并发(三),Thread类和Runnable接口

    目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口

  9. CF G. Indie Album AC自动机+fail树+线段树

    这个套路挺有意思的. 把 $trie$ 和 $fail$ 树都建出来,然后一起跑一跑就好了~ #include <queue> #include <cstdio> #inclu ...

  10. Nowcoder Typing practice ( Trie 图 )

    题目链接 题意 : 给出 n 个串.然后给出一个问询串.问你对于问询串的每一个前缀.需要至少补充多少单词才能使得其后缀包含 n 个串中的其中一个.注意 '-' 字符代表退格 分析 : 多串的匹配问询自 ...