Linux - 查找进程是不是已准备好或正在运行
Posted
技术标签:
【中文标题】Linux - 查找进程是不是已准备好或正在运行【英文标题】:Linux - Find if process is ready or runningLinux - 查找进程是否已准备好或正在运行 【发布时间】:2012-09-27 00:44:42 【问题描述】:我正在开发一个具有进程监控功能的 C++ 应用程序,它基于此模型监控状态变化:http://www.macdesign.net/capella/it4813/images/stallings-Linux_process-thread_states-f4.18.png
但是,由于 /proc/pid/status 将“就绪”和“正在执行”状态结合为“正在运行”,我不知道如何找出进程实际处于这些状态中的哪一个. 任何人都可以就我如何发现这一点提供任何建议吗?
【问题讨论】:
建议:查看here、here 和here。特别是第一个链接,即使它使用 /proc,也应该为您提供许多有用的提示。 '希望对您有所帮助... 在低端单核机器上 -e.g.便宜的上网本——在给定的时刻只有一个进程在运行,那就是你的监控进程(在多核机器上,情况不同)。因此,您实际上想要测量给定进程是否在最后几个 jiffies 期间一直在运行,即。可能在最后十秒内。 【参考方案1】:问题格式不正确。在单个 CPU 上,实际上永远不可能看到处于“运行”状态的进程,因为根据定义,监控进程具有 CPU。如果您确实需要对进程转换进行细粒度的日志记录控制,则需要在内核中进行(或至少在内核支持下进行——请参阅 lttng 或 systemtap 以获取可能在此处提供帮助的工具)。从用户空间跟踪 CPU 使用情况的工具更粗粒度,要么使用内核已经跟踪的总使用量(例如 /usr/bin/time
),要么每隔一段时间对进程表进行采样(bootchart 就是这样工作的)。
【讨论】:
以上是关于Linux - 查找进程是不是已准备好或正在运行的主要内容,如果未能解决你的问题,请参考以下文章