zoukankan      html  css  js  c++  java
  • shell学习(24)- strace

    strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等

    常见参数如下

    -tt 在每行输出的前面,显示毫秒级别的时间
    -ttt也可以向上面那样展示微秒级的时间戳
    -T 显示每次系统调用所花费的时间
    -v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
    -f 跟踪目标进程,以及目标进程创建的所有子进程
    -e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
    -o 把strace的输出单独写到指定的文件
    -s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
    -p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可
    -r 选项展示系统调用之间的相对时间戳
    -c 它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示

    常见跟踪

    -e trace=file 跟踪和文件访问相关的调用(参数中有文件名)
    -e trace=process 和进程管理相关的调用,比如fork/exec/exit_group
    -e trace=network 和网络通信相关的调用,比如socket/sendto/connect
    -e trace=signal 信号发送和处理相关,比如kill/sigaction
    -e trace=desc 和文件描述符相关,比如write/read/select/epoll等
    -e trace=ipc 进程见同学相关,比如shmget等

    使用例子:

    [kumufengchun@localhost~]$ strace ls
    execve("/bin/ls", ["ls"], [/* 42 vars */]) = 0
    brk(0)                                  = 0x1af0000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb98b254000
    access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
    open("/opt/rh/devtoolset-6/root/usr/lib64/tls/x86_64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
    
    ...

    跟踪nginx进程访问了哪些文件

    strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 ./nginx

    跟踪某个进程

    strace -o strace.log -tt -p 24298

    参考:

    https://blog.csdn.net/wang725/article/details/89297945

     https://linux.cn/article-3935-1.html

  • 相关阅读:
    你所选择的栏目与当前模型不相符请选择白色的选
    DEDECMS首页调用图片集里的多张图片
    dedecms内容页调用图片集文档的图集图片
    Sublime Text 使用介绍、全套快捷键及插件推荐
    基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
    nutch
    ant安装
    selenium经过WebDriverWait实现ajax测试
    查看当前android设备已安装的第三方包
    批处理学习总结之常用符号
  • 原文地址:https://www.cnblogs.com/kumufengchun/p/14607137.html
Copyright © 2011-2022 走看看