我找不到一种方法来捕获htop
有关 IO_RATE IO_READ_RATE IO_WRITE_RATE 的单个进程的输出。
我需要它(最后几秒钟的 IO(或仅 1 秒),而不是整体累积的 IO)来确定进程是否无法正常运行以自动重启它。
我不能使用iotop
它,因为它需要 root,这会使我的工作流程复杂化,主要是因为它显然是不必要的。
我尽我所能,/proc/$PID/...
但没有发现我可以使用的关于 IO 的字节数。不是它不在那里,只是我找不到它。
因此,一种通过管道获取htop
输出的方法也可以作为一种解决方法,但这不是我要问的。
我已经可以获取top
大约 %CPU 的输出,但这还不够,我在top
.
下面,其他地方的每个答案都是关于 iotop(否)或 htop(无法捕获输出)或其他没有帮助的应用程序,所以我决定问这个问题:
monitor IO of a running user's executable file read/write
https:// stackoverflow.com/questions/469159/an-htop-like-tool-to-display-disk-activity-in-linux(如果atop
可以,我仍然不明白如何......)
根据
man proc
, 您 正在 寻找 的 信息 应该 站在/proc/(pid)/io
:当然,你很可能找不到这个伪文件,因为它依赖于内核根据一个配置选项生成的额外统计信息:
CONFIG_TASK_IO_ACCOUNTING(启用按任务存储 I/O 记帐)
因此,您应该在确保设置了此选项后重新构建内核。正如您将在上面的链接中看到的那样,您可能会被限制选择 misc。其他配置选项。 CONFIG_TASK_XACCT(启用对 taskstats 的扩展记帐)特别是因为它默认为 no,而 CONFIG_TASK_IO_ACCOUNTING 取决于它。
顺便说一句,我不能保证除了 root 和 pid 所有者之外的任何人都可以读取伪文件。前段时间有很多关于这个问题的讨论,它很可能取决于你的内核版本。
注意:这些选项的需要可以从 /usr/src/linux/kernel/tsacct.c 代码的阅读中推断出来: