linux - 用于内存和 CPU 使用的 bash 脚本

标签 linux bash shell

<分区>

我需要编写脚本来返回文件,其中包含指定进程在给定时间段内的 cpu 和内存使用信息。 当我使用 ps -p pid 时,我只使用一个 cpu 内核,而当我使用 top 时,我得到二进制文件作为输出。我尝试了下一个:

    while :;
    top -n 1 -p pid | awk '{ print $9" "$10 }'
    sleep 10;
    done

最佳答案

内核为您的进程提供的信息位于/proc 文件系统中。首先,您需要解析这两个文件以获得脚本的相关数据

/过程/(pid)/状态
/proc/(pid)/stat

This线程详细描述了获取此 CPU 数据,因此我不会在这里。

我认为您会发现的问题是进程的 CPU 使用率并未分解为系统上可用的各种内核,而是汇总为一个接近 100% *(内核数)的数字。最接近这个的是顶部的“最后使用的处理器”列(选项 f,J),尽管这很难解决您的问题。 this 中的分析工具线程可能是最终答案。

不知道你的环境和需求;然而,一个解决方案可以只运行在机器上隔离的进程,然后在系统级别收集每个内核的 CPU 使用率,松散地代表进程需求。

关于linux - 用于内存和 CPU 使用的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661319/

相关文章:

linux - netcat 能否以直通方式工作

c - 编译ELF二进制时如何设置符号的节号?

bash - 如何检查字符串是否只包含数字/数字字符

node.js - 使用 child_process.exec 在 Electron 应用程序中运行 Bash 脚本

linux - 仅当其 ASCII 格式文件时,shell one-liner 才能对文件进行分类

php - 我无法将带有 angularJS 的登录表单发送到 php 文件

git - 为什么 PS1 没有更新 git 分支名称?

linux - 尽管端口忙于第一个实例,但多个服务实例正在使用 tomcat 开始

java - java中的后台进程监听stdin

PHP执行外部命令后返回空白页