详解pstack命令具体使用方法

pstack用来跟踪进程栈,这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于work状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在,下面为大家详细讲解一下pstack具体使用方法。

实例

pstree以树结构显示进程

pstree -p work | grep ad
sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)
                                               |-{ad_preprocess}(4553)
                                               |-{ad_preprocess}(4554)
                                               |-{ad_preprocess}(4555)
                                               |-{ad_preprocess}(4556)
                                               `-{ad_preprocess}(4557)

work为工作用户,-p为显示进程识别码,ad_preprocess共启动了6个子线程,加上主线程共7个线程。

ps -Lf 4551
UID        PID  PPID   LWP  C NLWP STIME TTY      stat   time CMD
work      4551 22670  4551  2    7 16:30 pts/2    Sl+    0:02 ./ad_preprocess
work      4551 22670  4552  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4553  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4554  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4555  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4556  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4557  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

进程共启动了7个线程

pstack显示每个进程的栈跟踪:

pstack 4551
Thread 7 (Thread 1084229984 (LWP 4552)):
#0  0x000000302afc63dc in epoll_wait () from /lib64/tls/libc.so.6#1  0x00000000006f0730 in ub::EPollEx::poll ()#2  0x00000000006f172a in ub::NetReactor::callback ()#3  0x00000000006fbbbb in ub::UBTask::CALLBACK ()#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#6  0x0000000000000000 in ?? ()
Thread 6 (Thread 1094719840 (LWP 4553)):
#0  0x000000302afc63dc in epoll_wait () from /lib64/tls/libc.so.6#1  0x00000000006f0730 in ub::EPollEx::poll ()#2  0x00000000006f172a in ub::NetReactor::callback ()#3  0x00000000006fbbbb in ub::UBTask::CALLBACK ()#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#6  0x0000000000000000 in ?? ()
Thread 5 (Thread 1105209696 (LWP 4554)):
#0  0x000000302b80baa5 in __nanosleep_nocancel ()#1  0x000000000079e758 in comcm::ms_sleep ()#2  0x00000000006c8581 in ub::UbClientManager::healthyCheck ()#3  0x00000000006c8471 in ub::UbClientManager::start_healthy_check ()#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#6  0x0000000000000000 in ?? ()
Thread 4 (Thread 1115699552 (LWP 4555)):
#0  0x000000302b80baa5 in __nanosleep_nocancel ()#1  0x0000000000482b0e in armor::armor_check_thread ()#2  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#3  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#4  0x0000000000000000 in ?? ()
Thread 3 (Thread 1126189408 (LWP 4556)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6#2  0x000000000044c972 in Business_config_manager::run ()#3  0x0000000000457b83 in Thread::run_thread ()#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#6  0x0000000000000000 in ?? ()
Thread 2 (Thread 1136679264 (LWP 4557)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6#2  0x00000000004524bb in Process_thread::sleep_period ()#3  0x0000000000452641 in Process_thread::run ()#4  0x0000000000457b83 in Thread::run_thread ()#5  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0#6  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6#7  0x0000000000000000 in ?? ()
Thread 1 (Thread 182894129792 (LWP 4551)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6#2  0x0000000000420d79 in Ad_preprocess::run ()#3  0x0000000000450ad0 in main ()

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/221754.html<

(0)
运维的头像运维
上一篇2025-04-15 04:33
下一篇 2025-04-15 04:35

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注