首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

4.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

使用strace跟踪多进程程序

简介 strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 2. 常用参数 -p 跟踪指定的进程 -o filename 默认strace将结果输出到stdout。...执行如下命令,开始跟踪 strace -ff -o task php Taskdemo.php 执行后我们得到三个文件 task.28203 task.28204 task.28205 熟悉代码的同学应该可以猜到...,这三个文件分别对应主进程,生产者子进程和消费者子进程。...- task.28203(主进程,通常来说进程号最小的文件就是主进程对应的文件) /*生成生产者和消费者进程各一个*/ clone(child_stack=0, flags=CLONE_CHILD_CLEARTID...strace -c php Taskdemo.php 我们执行上面的命令,看下主进程进行的系统调用。

2.5K10

Linux 命令(137)—— strace 命令

在命令执行的过程中,strace 会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。...这通过保持跟踪对象是调用进程的直接子进程来减少 strace 的可见效果 -d 输出 strace 关于标准错误的调试信息 -f 跟踪由 fork(2), vfork(2) and clone(2)...我们还是使用上面的 a.out 程序,来观察进程接收信号的情况,即跟踪进程和信号相关的系统调用。 #开启跟踪 strace -e trace=signal -o strace.out ....(4)trace 一个现有的进程strace 不光能自己初始化一个进程进行 trace,还能使用 -p 选项追踪现有的进程。...具体用法如下: strace -p PID ---- 参考文献 [1] strace(1) manual [2] Linux 命令大全.strace [3] 马昌伟.strace命令详解

7.3K31

【SRE该掌握的利器】Linux中的strace:深入进程的系统调用

Linux系统中,进程与硬件的交互并非直接进行,而是通过系统调用来实现。strace是一个强大的工具,它可以追踪进程执行时的系统调用以及接收到的信号,这对于诊断和调试程序非常有用。...strace简介与原理 strace用于跟踪程序执行时的系统调用和信号。在Linux中,用户态的进程需要通过系统调用来请求内核态的服务,比如文件操作、网络通信等。...信号则用于进程间的通知和简单通信,以及处理某些紧急情况。 安装与基本使用 在大多数Linux发行版中,strace可以通过包管理器轻松安装。...跟踪特定进程 如果要跟踪一个已经运行的进程,可以使用-p参数指定进程ID: strace -p 定位进程异常退出 通过跟踪进程的系统调用,可以观察到进程在异常退出前的最后行为: strace...linux/man-pages/man1/strace.1.html

12220

【SRE该掌握的利器】Linux中的strace:深入进程的系统调用

Linux系统中,进程与硬件的交互并非直接进行,而是通过系统调用来实现。strace是一个强大的工具,它可以追踪进程执行时的系统调用以及接收到的信号,这对于诊断和调试程序非常有用。...strace简介与原理strace用于跟踪程序执行时的系统调用和信号。在Linux中,用户态的进程需要通过系统调用来请求内核态的服务,比如文件操作、网络通信等。...信号则用于进程间的通知和简单通信,以及处理某些紧急情况。 安装与基本使用 在大多数Linux发行版中,strace可以通过包管理器轻松安装。...跟踪特定进程如果要跟踪一个已经运行的进程,可以使用-p参数指定进程ID:strace -p 定位进程异常退出通过跟踪进程的系统调用,可以观察到进程在异常退出前的最后行为:strace -p <...参考资料Linux Documentation Project: https://www.kernel.org/doc/man-pages/strace 官方文档: http://man7.org/linux

18020

Strace命令手册

strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。...在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。...strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 strace参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等....-d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程....(strace -a open php) 3、跟踪进程(strace -p 1008) 4、系统调用概要,执行时间,错误等信息(strace -c php) 案例: 1、保存输出结构strace

1.6K80

pstack 与 strace

-d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程....-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程进程号. -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪....-e strace=signal 跟踪所有与系统信号有关的 系统调用 -e trace=ipc 跟踪所有与进程通讯有关的系统调用 -e abbrev=set 设定 strace输出的系统调用的结果集....-o filename 将strace的输出写入文件filename -p pid 跟踪指定的进程pid. -s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出....-u username 以username 的UID和GID执行被跟踪的命令 strace 实用选项 strace -T -r -c -p pid 打印出该pid进程的系统调用耗时 pstack   它是一个打印进程的所有线程栈的一个工具

1K20

strace(1) command

在命令执行的过程中,strace 会记录和解析进程的所有系统调用以及这个进程所接收到的所有信号值。...这通过保持跟踪对象是调用进程的直接子进程来减少 strace 的可见效果 -d 输出 strace 关于标准错误的调试信息 -f 跟踪由 fork(2), vfork(2) and clone(2)...我们还是使用上面的 a.out 程序,来观察进程接收信号的情况,即跟踪进程和信号相关的系统调用。 #开启跟踪 strace -e trace=signal -o strace.out ....(4)跟踪一个现有的进程strace 不光能自己初始化一个进程进行 trace,还能使用 -p 选项追踪现有进程。...具体用法如下: strace -p PID ---- 参考文献 strace(1) - Linux manual page - man7.org Linux 命令大全.strace 马昌伟.strace

15420

linux通过进程名杀死进程_linux关闭进程命令

笔记:根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程的命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程的id     # 2使用kill -9 强制终止进程...函数功能:根据进程名杀死程序     参数:进程名     返回值:无 !...————————————————————— # 根据进程名查询包含进程名的进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.8K20

Linux进程学习【进程状态】

本文将会带着大家认识的各种 进程 状态 ---- 正文 在谈 进程状态 之前,首先要回顾下之前的 进程 相关知识 OS管理的本质是先描述,再组织 OS并非直接管理 进程 ,而是管理 进程 的 PCB(...,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样的 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习的正是 Linux 中的 进程 状态 进程是何种状态,取决于此进程的PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往的认知来说...父进程,此时 子进程 会被OS领养 子进程 的 父进程 变为 1号进程进程 就变成了一个 孤儿进程 发出指令终止 父进程 假设 子进程 不被 1号进程 领养 子进程 退出时就会无人回收...,成为一只游离的僵尸 僵尸进程 有 内存泄漏 的风险 因此 子进程 会被OS领养 ---- 总结 以上就是关于进程学习【进程状态】的全部内容了,我们简单学习了 进程 的相关状态,知道了何为 阻塞、进程

18630

Linux进程学习【进程地址】

,这种行为称为 写时拷贝 刚开始,父子进程共同使用同一块空间 当子进程修改共享值后 ---- 进程地址空间 下面来好好谈谈 进程地址空间 (虚拟地址) ️虚拟地址 在早期程序中,是没有虚拟地址空间的...因为每个进程都有属于自己的空间,OS 在管理进程时,能够以统一的视角进行管理,效率很高 光有 虚拟地址空间 是不够的,还需要一套完整的 ‘‘翻译’’ 机制进行程序寻址,如 Linux 中的 页表 +...后续对这块进行写入操作时,会直接拒绝 对于这种机制感兴趣的同学可以点击下面这几篇文章查看详细内容: Linux的虚拟内存详解(MMU、页表结构) ARM体系架构——MMU 逻辑地址、页表、MMU等...️写时拷贝 Linux 中存在一个很有意思的机制:写时拷贝 这是一种 赌bo 行为,OS 此时就赌你不会对数据进行修改,这样就可以 使多个 进程 在访问同一个数据时,指向同一块空间,当发生改写行为时...(权限设置) 将 进程管理 和 内存管理 进行 解耦,方便 OS 进行更高效的管理 可以让进程以统一的视角看待自己的代码和数据 ---- 总结 以上就是本篇关于 Linux进程学习【进程地址】的全部内容了

14220
领券