计算单个进程的总磁盘 I/O

2024-01-18

我正在寻找一些工具,可以在单个进程结束后转储总磁盘 I/O。 到目前为止我的发现是:-

  • iotop= 它实时显示每个进程的 i/o,但不给出 流程结束后总计。
  • iostat= 它显示实时 I/O 但 不告诉过程

例如,我有一些进程在后台运行,PID 为####。我需要总字节数Written and Read任何人都可以告诉我如何在给定进程 PID 的情况下提取此信息。


请随意使用这个涂鸦(myio.sh):

#!/bin/bash 

TEMPFILE=$(tempfile)    # create temp file for results

trap "rm $TEMPFILE; exit 1" SIGINT  # cleanup after Ctrl+C

SECONDS=0               # reset timer

$@ &                    # execute command in background

IO=/proc/$!/io          # io data of command
while [ -e $IO ]; do
    cat $IO > "$TEMPFILE"   # "copy" data
    sed 's/.*/& Bytes/' "$TEMPFILE" | column -t
    echo
    sleep 1
done

S=$SECONDS              # save timer

echo -e "\nPerformace after $S seconds:"
while IFS=" " read string value; do
    echo $string $(($value/1024/1024/$S)) MByte/s
done < "$TEMPFILE" | column -t

rm "$TEMPFILE"          # remove temp file

Syntax: ./myio.sh <your command>

例子:

  • ./myio.sh dd if=/dev/zero of=/dev/null bs=1G count=4096
  • 作为根用户:./myio.sh dd if=/dev/sda1 of=/dev/null bs=1M count=4096

请更改ddof=在最后一个例子中,只有当你知道自己在做什么时。


通过我写的这个简单脚本,您可以观察已经运行的进程及其 IO。

Syntax: pio.sh PID

#!/bin/bash

[ "$1" == "" ] && echo "Error: Missing PID" && exit 1
IO=/proc/$1/io          # io data of PID
[ ! -e "$IO" ] && echo "Error: PID does not exist" && exit 2
I=3                     # interval in seconds
SECONDS=0               # reset timer

echo "Watching command $(cat /proc/$1/comm) with PID $1"

IFS=" " read rchar wchar syscr syscw rbytes wbytes cwbytes < <(cut -d " " -f2 $IO | tr "\n" " ")

while [ -e $IO ]; do
    IFS=" " read rchart wchart syscrt syscwt rbytest wbytest cwbytest < <(cut -d " " -f2 $IO | tr "\n" " ")

    S=$SECONDS
    [ $S -eq 0 ] && continue

cat << EOF
rchar:                 $((($rchart-$rchar)/1024/1024/$S)) MByte/s
wchar:                 $((($wchart-$wchar)/1024/1024/$S)) MByte/s
syscr:                 $((($syscrt-$syscr)/1024/1024/$S)) MByte/s
syscw:                 $((($syscwt-$syscw)/1024/1024/$S)) MByte/s
read_bytes:            $((($rbytest-$rbytes)/1024/1024/$S)) MByte/s
write_bytes:           $((($wbytest-$wbytest)/1024/1024/$S)) MByte/s
cancelled_write_bytes: $((($cwbytest-$cwbytes)/1024/1024/$S)) MByte/s
EOF
    echo
    sleep $I
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算单个进程的总磁盘 I/O 的相关文章

  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • Python 读取未格式化的直接访问 Fortran 90 给出不正确的输出

    这是数据的写入方式 它是一个二维浮点矩阵 我不确定大小 open unit 51 file rmsd nn output form unformatted access direct status replace recl Npoints
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • Process.Close() 不会终止创建的进程,c#

    我编写了一个 C 应用程序 它使用System Diagnostics Process类来创建进程 使用 Process P1 new Process P1 FileName myexe exe 和其他适当的设置 我已将其链接到一个运行大约
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 在bash脚本中分割字符串[重复]

    这个问题在这里已经有答案了 我想分割一个字符串并需要其中的一些参数 USER dn uid dfl3030 cn users cn accounts dc tenant dc ycs dc io cn Reb Lena Schmidt kr
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • BASH:将数据从平面文件导入模板

    我有一个平面记录文件 每行有 33 行 我需要将此文件格式化为模板中的规格 模板为 DOS 格式 源文件为 NIX 格式 该模板具有必须遵守的特定缩进和间距 我想到了几个选择 BASH 与经典的 nix 工具 sed awk grep 等
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad

随机推荐

  • 验证请求源是来自Internet还是Intranet

    我有在互联网上运行的应用程序 其中也包含一些管理模块 我不想让用户在互联网上访问我的管理模块 我希望来自内联网的请求可以访问管理模块 有没有办法在不开发服务管理组件的新应用程序的情况下控制这个问题 如果您使用 servlet 您可以添加过滤
  • 如何使用 Pyrtd/pythoncom 解决“pywintypes.com_error”?

    我正在尝试使用pyrtd https code google com p pyrtd Python模块用于获取可以通过RTD在Excel中获取的信息 但是 当我尝试运行示例 python 脚本 http code google com p
  • Ionic 无限滚动不适用于所有 Android 设备

    我目前正在开发一个离子应用程序并成功实现了无限滚动功能 它在桌面浏览器和较新的 Android 设备上运行良好 但是 我在运行 Android 4 1 或更低版本的手机上遇到问题 问题 我打开页面 它加载并显示前 20 个项目 效果很好 我
  • Firefox 中的 Slidedown 和 SlideUp 循环错误

    http www queness com post 1047 easy to style jquery drop down menu tutorial comment 7912 http www queness com post 1047
  • hibernate - HQL 连接许多子句

    我一直在阅读 Hibernate 文档 但没有找到任何可以解释如何执行以下操作的内容 我尝试将以下 SQL 代码转换为 HQL SELECT msg cmd FROM Schema Messages AS msg LEFT OUTER JO
  • 使用多个 JSON 对象设置单元格的文本

    我有一个简单的网络服务 可以将一些数据传递到表视图中 并且工作正常 这是我目前拥有的代码 cell detailTextLabel setText item objectForKey Ball 1 正如我所说 这完美地工作并显示球号 例如
  • 我可以将 vjslib.dll 放入应用程序的 /bin 目录中吗?

    我正在进行生产部署 不幸的是 我正在部署到一个严格控制的环境 今晚我不太可能获得运行完整 Visual J 可再发行 EXE 的许可 我们的应用程序当前抛出错误 表示找不到程序集 vjslib dll 我可以将其放入应用程序的垃圾箱中 然后
  • QML TableView从特定单元格获取数据(选定行+特定列)

    我有QMLTableView with QSqlQueryModel 我需要选择任何行并从表的每一列中获取数据以分隔TextField 这是 abonentstable h pragma once include
  • 如何从 URL 中删除网页扩展名? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想从 URL 中删除网页扩展名 有人给了我 htaccess 的代码 但当我打开重写模块时 它在本地主机上工作 但是当我在 Godaddy 上使用它
  • 多方peer.js应用程序

    我对 PeerJs 和 WebRTC 是全新的 我有一个 1 1 NodeJS PeerJS 应用程序在我的远程服务器上运行 效果很好 然而现在我想探索将其扩展到 1 N 模型 其中主机 ID 可以有多个对等点连接到它们 并且每个对等点都可
  • 如果任何源列为 true,则将布尔值聚合为 true

    假设我有下表 id column a column b column c 1 t f t 2 t f f 3 f t f 从上表中 我想 select rows from id 1 2 结果应该是 column a column b col
  • 除了最后一项之外,如何在所有项上设置边框底部

    如果我有一个ul 我如何设置所有的边框底部li除了最后一项之外的项目 我也在尝试使宽度border180 像素 这是我的代码 HTML ul class sideNav li a href history asp History a li
  • 长按注释时,注释图像会被 RedPushPin 替换

    我使用以下内容创建了自定义注释 MKAnnotationView mapView MKMapView mapView viewForAnnotation id
  • 提示用户输入汇编 ci20 seg 错误

    我目前正在 ci20 机器上开发一个小程序 提示用户输入整数值 然后将该值打印到屏幕上 我当前的代码 data prompt asciiz Please enter an integer message asciiz nValue ente
  • 蟒蛇时间偏移

    如何在 python 中应用当前时间的偏移量 换句话说 能够获取当前时间减去 x 小时和 或减去 m 分钟和 或减去 s 秒和 或减去 ms 毫秒 例如 curent time 18 26 00 000 offset 01 10 00 00
  • 单子值的案例

    有没有一种方法可以对 monad 中存储的值执行 case 而无需将名称绑定到它 即 不要这样做 c lt getChar case c of 有没有办法做到这一点 mcase getChar of 或者 如果可以部分应用 case 语句
  • 有没有更有效的方法将数组从 C++ 返回到 javascript?

    为了将类型化数组从 emscripten ed C 传递到 javascript 我想出了这段代码 include
  • 判断操作系统是否为Mac

    我最近做了很多谷歌搜索 试图找到一个简单 容易的 php 脚本来识别用户是否在 Mac 上 我想用它来告诉用户我告诉他们的键盘快捷键是 控制 还是 命令 我不需要了解浏览器什么的 只要电脑是Mac就可以了 这是我所要求的可能的概述 if o
  • 何时使用 babel.config.js 和 .babelrc

    我正在学习 Babel 想学习如何配置 Babel 我找到了两种配置 Babel 的方法 创建 babel config js 和 babelrc 文件 在什么情况下我们应该选择一个配置文件而不是另一个 来自文档 https babeljs
  • 计算单个进程的总磁盘 I/O

    我正在寻找一些工具 可以在单个进程结束后转储总磁盘 I O 到目前为止我的发现是 iotop 它实时显示每个进程的 i o 但不给出 流程结束后总计 iostat 它显示实时 I O 但 不告诉过程 例如 我有一些进程在后台运行 PID 为