一、命令介绍

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. Linux 内核源代码的几个C语言技巧

    1.#define中使用do{statement}while(0)保证statement无论在何处都能正确执行一次2.将链表操作抽象出来,与宿主结果相互独立.所有的链表操作都作用与list_head, ...

  2. windows2012下一端口多网站 Apache配置

    援引自https://www.cnblogs.com/huangtailang/p/6026828.html 1.在httpd.conf文件里启用虚拟主机功能,即去掉下面配置项前面的# #LoadMo ...

  3. netfromwork4.5 迁移到netcore 遇到踩坑

    https://weblogs.asp.net/ricardoperes/using-mef-in-net-core 可以用https://www.bbsmax.com/A/xl56bpv45r/ 里 ...

  4. EF Core命令

    新建 Add-Migration init Update-Database init 修改model后,执行迁移的命令 更新数据库 每次更新都要{update}修改 Add-Migration {up ...

  5. kubernetes运用

    1:kubernetes基本介绍 kubernetes 是一个开源的容器集群管理系统,K8s用于容器化应用程序的部署 扩展和管理,提供容器编排 资源调度 弹性伸缩 部署管理  服务发现等一系列功能. ...

  6. jquery checkbox选择器 语法

    jquery checkbox选择器 语法 作用::checkbox 选择器选取类型为 checkbox 的 <input> 元素.大理石平台价格表 语法:$(":checkbo ...

  7. 关系型数据库(七),复杂SQL语句

    目录 1.SQL语句由六部分组成 2.Group By 和HAVING 七.复杂SQL语句 1.SQL语句由六部分组成 Select  *** From  *** Where  *** Group B ...

  8. BZOJ 3551: [ONTAK2010]Peaks加强版 Kruskal重构树+dfs序+主席树+倍增

    建出来 $Kruskal$ 重构树. 将询问点向上跳到深度最小,且合法的节点上. 那么,得益于重构树优美的性质,这个最终跳到的点为根的所有子节点都可以与询问点互达. 对于子树中求点权第 $k$ 大的问 ...

  9. Android重写HorizontalScrollView模仿ViewPager效果

    Android提供的ViewPager类太复杂,有时候没有必要使用,所以重写一个HorizontalScrollView来实现类似的效果,也可以当做Gallery来用 思路很简单,就是重写onTouc ...

  10. C++11 中的强类型枚举

    // C++11之前的enum类型是继承C的,不温不火: // C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮 // 使用过QT 的都知道,早就应该这么做了,用的很爽!! ...