• Linux监控命令之==>strace


    一、命令介绍

    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、跟踪指定进程

  • 相关阅读:
    数据结构之整数划分问题(转)
    各种排序方法的收集
    bloom filter 的Java 版
    常见面试题学习(3)
    优先级队列的Java ,C++ STL,堆实现
    常见面试题学习(2)
    常见面试题学习(5)
    常见面试题学习(4)
    常见面试题学习(1)
    bitmap与桶方式对1000万数据进行排序(转+自己实现理解)
  • 原文地址:https://www.cnblogs.com/L-Test/p/9549667.html
Copyright © 2020-2023  润新知